42 lines
1.2 KiB
PHP
42 lines
1.2 KiB
PHP
![]() |
<?php
|
||
|
|
||
|
namespace Drupal\xautoload\ClassLoader;
|
||
|
|
||
|
/**
|
||
|
* Behaves mostly like the Symfony ClassLoader classes.
|
||
|
*/
|
||
|
abstract class AbstractClassLoader implements ClassLoaderInterface {
|
||
|
|
||
|
/**
|
||
|
* Registers this instance as an autoloader.
|
||
|
*
|
||
|
* @param boolean $prepend
|
||
|
* If TRUE, the loader will be prepended. Otherwise, it will be appended.
|
||
|
*/
|
||
|
function register($prepend = FALSE) {
|
||
|
// http://www.php.net/manual/de/function.spl-autoload-register.php#107362
|
||
|
// "when specifying the third parameter (prepend), the function will fail badly in PHP 5.2"
|
||
|
if (version_compare(PHP_VERSION, '5.3.0') >= 0) {
|
||
|
spl_autoload_register(array($this, 'loadClass'), TRUE, $prepend);
|
||
|
}
|
||
|
elseif ($prepend) {
|
||
|
$loaders = spl_autoload_functions();
|
||
|
spl_autoload_register(array($this, 'loadClass'));
|
||
|
foreach ($loaders as $loader) {
|
||
|
spl_autoload_unregister($loader);
|
||
|
spl_autoload_register($loader);
|
||
|
}
|
||
|
}
|
||
|
else {
|
||
|
spl_autoload_register(array($this, 'loadClass'));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Unregister from the spl autoload stack.
|
||
|
*/
|
||
|
function unregister() {
|
||
|
spl_autoload_unregister(array($this, 'loadClass'));
|
||
|
}
|
||
|
}
|