2021-01-08 11:55:00 +01:00

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'));
}
}