/** * Retrieves the singleton instance * @return ClassAutoloader */ public static function get_instance() { if (is_null(self::$instance)) { self::$instance = new self(); } return self::$instance; }
/** * Initializes the autoloader subsystem */ public static function enable_autoload_system() { if (!class_exists('ClassAutoloader')) { self::include_once_file_if_exists(WORDPRESS_THEME_UTILS_PATH . WORDPRESS_THEME_UTILS_AUTOLOADER_RELATIVE_PATH); } if (class_exists('ClassAutoloader')) { ClassAutoloader::get_instance()->add_loading_template(get_stylesheet_directory() . '/' . WORDPRESS_THEME_UTILS_DIRNAME . '/%classname%.class.php')->add_loading_template(get_template_directory() . '/' . WORDPRESS_THEME_UTILS_DIRNAME . '/%classname%.class.php'); } }
/** * FlexiNSP * * @access public * @param string classname * @loading class from namespace of framework */ public static function load($className) { // all registered namespaces self::$ListOfNameSpaces = NameSpaces::getNSPList(); // if object registerd ? if (count(self::$ListOfNameSpaces) > 0) { // searching in namespace ... foreach (self::$ListOfNameSpaces as $Key => $Value) { #print_r(NameSpaces::${$Value}); if (array_key_exists($className, NameSpaces::${$Value})) { #if(isset(NameSpaces::${$Value}[$className])){ $pathToClass = NameSpaces::${$Value}[$className]; if (isset($pathToClass)) { if (file_exists($pathToClass)) { // ... so wird sie eingebunden require_once $pathToClass; } break; } } // ${$Value} = name of class // {$classname} = name of property (Path) ~ name of class // Korrespondiert mit der STATIC Klasse "NameSpaces" /* if(isset(NameSpaces::${$Value}->{$className})){ // Name des Pfades und der Klasse $ExternalPathAndNameOfClass = NameSpaces::${$Value}->{$className}; // Existiert die Klasse, ... if(file_exists($ExternalPathAndNameOfClass)){ // ... so wird sie eingebunden require_once($ExternalPathAndNameOfClass); } break; } #if */ } #foreach } #count }
/** * Initializes the class loader * * @return void */ private function initializeClassLoader() { if (!class_exists(FL_PATH_CLASSES . '/Resources/ClassAutoloader.php', FALSE)) { require FL_PATH_CLASSES . '/Resources/ClassAutoloader.php'; ClassAutoloader::register(); } }
<?php include_once __DIR__ . '/../lib/ClassAutoloader.class.php'; $dir = realpath(__DIR__ . '/../../laravel/vendor'); $dir = realpath(__DIR__ . '/../../ZendFramework-2.4.9'); echo '<pre>'; echo '<br><br>Scan ' . $dir . '.<br><br>Paths are relative to the directory where the file that defines ClassAutoloader is stored:<br><br>'; $ca = ClassAutoloader::___getInstance(array($dir), __DIR__ . '/../class-autoloader-config.php', true, array(__DIR__ . '/../test-classes/lib/sub-lib/backup'), array('php'), array('class.php')); print_r($ca->debugGetDeclaredClasses());
<?php $sourcesDir = __DIR__ . '/../../test-classes'; $am = ClassAutoloader::___getInstance($sourcesDir, __DIR__ . '/../../', false); $sourceFileNames = $am->debugGetSourceFileNames(); $this->ASSERT_TRUE(in_array('../test-classes/SampleClass.class.php', $sourceFileNames)); $this->ASSERT_TRUE(in_array('../test-classes/Sources.php', $sourceFileNames)); $this->ASSERT_TRUE(in_array('../test-classes/lib/Class2.class.php', $sourceFileNames)); $this->ASSERT_TRUE(in_array('../test-classes/lib/sub-lib/OtherSources.php', $sourceFileNames)); $declaredClasses = $am->debugGetDeclaredClasses(); $this->ASSERT_EQUALS($declaredClasses['SampleNS\\SampleClass'], '../test-classes/SampleClass.class.php'); $this->ASSERT_EQUALS($declaredClasses['TestClass'], '../test-classes/Sources.php'); $this->ASSERT_EQUALS($declaredClasses['TestClass2'], '../test-classes/Sources.php'); $this->ASSERT_EQUALS($declaredClasses['C2'], '../test-classes/lib/Class2.class.php'); $this->ASSERT_EQUALS($declaredClasses['NS2\\SubClass'], '../test-classes/lib/sub-lib/OtherSources.php'); $obj = new \SampleNS\SampleClass();