<?php namespace PHPFUI\InstaDoc; class ChildClasses { private static array $children = []; public static function generate() : void { $classes = NamespaceTree::getAllClasses(); foreach ($classes as $class) { try { $reflection = new \ReflectionClass($class); $parent = $reflection->getParentClass(); if ($parent) { $parentName = $parent->getName(); if (isset(self::$children[$parentName])) { self::$children[$parentName][] = $reflection->getName(); } else { self::$children[$parentName] = [$reflection->getName()]; } } } catch (\Throwable) { } } } public static function getChildClasses(string $fqn) : array { return self::$children[$fqn] ?? []; } public static function load(string $file = '../ChildClasses.serial') : bool { if (! \file_exists($file)) { self::generate(); return self::save($file); } $contents = \file_get_contents($file); $temp = \unserialize($contents); if (! $temp) { return false; } self::$children = $temp; return true; } public static function save(string $file = '../ChildClasses.serial') : bool { foreach (self::$children as &$childClasses) { \sort($childClasses); } return \file_put_contents($file, \serialize(self::$children)) > 0; } }