/** * Include everything, so that actually *all* classes are available and * build a map of classes and their subclasses * * @param $classManifest An array of all Sapphire classes; keys are class names and values are filenames * * @return array Returns an array that holds all class relevant * information. */ private static function allClasses($classManifest) { self::$classArray = array(); self::$extendsArray = array(); self::$implementsArray = array(); // Include everything, so we actually have *all* classes foreach ($classManifest as $file) { $b = basename($file); if ($b != 'cli-script.php' && $b != 'main.php') { self::parse_file($file); } } $allClasses["parents"] = self::find_parents(); $allClasses["children"] = self::find_children(); $allClasses["implementors"] = self::$implementsArray; foreach (self::$classArray as $class => $info) { $allClasses['exists'][$class] = $class; } // Build a map of classes and their subclasses $_classes = get_declared_classes(); foreach ($_classes as $class) { $allClasses['exists'][$class] = $class; foreach ($_classes as $subclass) { if (is_subclass_of($class, $subclass)) { $allClasses['parents'][$class][$subclass] = $subclass; } if (is_subclass_of($subclass, $class)) { $allClasses['children'][$class][$subclass] = $subclass; } } } return $allClasses; }
/** * Include everything, so that actually *all* classes are available and * build a map of classes and their subclasses * * @param $classManifest An array of all Sapphire classes; keys are class names and values are filenames * * @return array Returns an array that holds all class relevant * information. */ private static function allClasses($classManifest) { self::$classArray = array(); self::$extendsArray = array(); self::$implementsArray = array(); // Include everything, so we actually have *all* classes foreach ($classManifest as $file) { $b = basename($file); if ($b != 'cli-script.php' && $b != 'main.php') { self::parse_file($file); } } $allClasses["parents"] = self::find_parents(); $allClasses["children"] = self::find_children(); $allClasses["implementors"] = self::$implementsArray; foreach (self::$classArray as $class => $info) { $allClasses['exists'][$class] = $class; // Class names are converted to lowercase for lookup to adhere to PHP's case-insensitive // way of dealing with them. $allClasses['file'][strtolower($class)] = $info['file']; } // Build a map of classes and their subclasses $_classes = get_declared_classes(); foreach ($_classes as $class) { $allClasses['exists'][$class] = $class; foreach ($_classes as $subclass) { if (is_subclass_of($class, $subclass)) { $allClasses['parents'][$class][$subclass] = $subclass; } if (is_subclass_of($subclass, $class)) { $allClasses['children'][$class][$subclass] = $subclass; } } } return $allClasses; }