protected static function loadSubClassesMap() { self::$_classInheritMap = array(); if (!file_exists(self::$_classInheritMapLocation)) { foreach (self::$_classMap as $class) { if (!class_exists($class)) { continue; } $parentClass = get_parent_class($class); while ($parentClass) { if (!isset(self::$_classInheritMap[$parentClass])) { self::$_classInheritMap[$parentClass] = array(); } self::$_classInheritMap[$parentClass][] = $class; $parentClass = get_parent_class($parentClass); } } file_put_contents(self::$_classInheritMapLocation, serialize(self::$_classInheritMap)); } else { self::$_classInheritMap = unserialize(file_get_contents(self::$_classInheritMapLocation)); } }