public static function register() { if (self::isRegistered()) { return false; } self::$isRegistered = spl_autoload_register(self::$callback); return self::$isRegistered; }
function __autoload($class) { if (Autoloader::isRegistered($class)) { Autoloader::retrieve($class); } else { trigger_error('__autoload: The requested class "' . $class . '" is not registered.', E_USER_ERROR); } // end function }
/** * Tests normalization * * An autoloader will unregister itself automatically if another autoloader * would include it. On the other hand, if including autoloader is unregistered * all automatically unregistered autoloaders should be registered again. * * @see Autoloader::register() * @see Autoloader::remove() * @see Autoloader::_normalizeSearchPaths() * @see Autoloader::_removeByNormalization() * @return void */ public function testNormalizedClassPaths() { $autoloader = Autoloader::getRegisteredAutoloader(); Autoloader::removeAll(); $classA = $this->_autoloaderTestHelper->makeClass("A", "testNormalizedClassPaths"); $classB = $this->_autoloaderTestHelper->makeClass("B", "testNormalizedClassPaths/B"); $autoloaderA = new Autoloader(AutoloaderTestHelper::getClassDirectory() . "/testNormalizedClassPaths"); $autoloaderA->register(); $autoloaderB = new Autoloader(AutoloaderTestHelper::getClassDirectory() . "/testNormalizedClassPaths/B"); $autoloaderB->register(); $this->assertTrue($autoloaderA->isRegistered()); $this->assertFalse($autoloaderB->isRegistered()); $this->_autoloaderTestHelper->assertLoadable($classA); $this->_autoloaderTestHelper->assertLoadable($classB); Autoloader::removeAll(); $classA = $this->_autoloaderTestHelper->makeClass("A", "testNormalizedClassPaths"); $classB = $this->_autoloaderTestHelper->makeClass("B", "testNormalizedClassPaths/B"); $autoloaderB = new Autoloader(AutoloaderTestHelper::getClassDirectory() . "/testNormalizedClassPaths/B"); $autoloaderB->register(); $autoloaderA = new Autoloader(AutoloaderTestHelper::getClassDirectory() . "/testNormalizedClassPaths"); $autoloaderA->register(); $this->_autoloaderTestHelper->assertLoadable($classA); $this->_autoloaderTestHelper->assertLoadable($classB); $this->assertTrue($autoloaderA->isRegistered()); $this->assertFalse($autoloaderB->isRegistered()); Autoloader::removeAll(); $autoloader->register(); }