You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.4 KiB
54 lines
1.4 KiB
<?php
|
|
|
|
//prs0 compliant
|
|
class Autoload
|
|
{
|
|
private static $_instance = null;
|
|
|
|
public static function charger()
|
|
{
|
|
if(null !== self::$_instance) {
|
|
throw new RuntimeException(sprintf('%s is already started', __CLASS__));
|
|
}
|
|
|
|
self::$_instance = new self();
|
|
|
|
|
|
if(!spl_autoload_register(array(self::$_instance, '_autoload'), false)) {
|
|
throw RuntimeException(sprintf('%s : Could not start the autoload', __CLASS__));
|
|
}
|
|
}
|
|
|
|
public static function shutDown()
|
|
{
|
|
if(null !== self::$_instance) {
|
|
|
|
if(!spl_autoload_unregister(array(self::$_instance, '_autoload'))) {
|
|
throw new RuntimeException('Could not stop the autoload');
|
|
}
|
|
|
|
self::$_instance = null;
|
|
}
|
|
}
|
|
|
|
private static function _autoload($className)
|
|
{
|
|
|
|
// echo $className;
|
|
$folder = "./";
|
|
$className = ltrim($className, '\\');
|
|
$fileName = '';
|
|
$namespace = '';
|
|
if ($lastNsPos = strripos($className, '\\')) {
|
|
$namespace = substr($className, 0, $lastNsPos);
|
|
$className = substr($className, $lastNsPos + 1);
|
|
$fileName = str_replace('\\', DIRECTORY_SEPARATOR, $namespace) . DIRECTORY_SEPARATOR;
|
|
}
|
|
$fileName .= str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php';
|
|
|
|
include_once $folder.$fileName;
|
|
}
|
|
}
|
|
|
|
?>
|