mirror of
https://github.com/YunoHost-Apps/limesurvey_ynh.git
synced 2024-09-03 19:36:32 +02:00
42 lines
No EOL
1.1 KiB
PHP
42 lines
No EOL
1.1 KiB
PHP
<?php
|
|
|
|
class ClassFactory {
|
|
|
|
protected static $map = array();
|
|
protected static $registered = false;
|
|
|
|
public static function autoload($className)
|
|
{
|
|
foreach(self::$map as $prefix => $baseClass)
|
|
{
|
|
if (strpos($className, $prefix) === 0)
|
|
{
|
|
self::createClass($baseClass, $className);
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public static function createClass($baseClass, $className)
|
|
{
|
|
$code = "class $className extends $baseClass {}";
|
|
return eval($code);
|
|
}
|
|
|
|
public static function registerClass($prefix, $baseClass)
|
|
{
|
|
self::$map[$prefix] = $baseClass;
|
|
// Keep the array "reverse"-sorted by keys.
|
|
//uksort(self::$map, function($a, $b) { return strcmp($a, $b) * -1;} );
|
|
|
|
// mdekker: Don't see the need for sorting, but since anonymous functions
|
|
// can break on eaccelerator avoid it when possible uncomment if needed:
|
|
//krsort(self::$map);
|
|
if (!self::$registered)
|
|
{
|
|
self::$registered = spl_autoload_register(array(get_class(), 'autoload'), true, true);
|
|
}
|
|
}
|
|
}
|
|
?>
|