Classloader.
Protected constructor since this is a static class.
NULL
protected function __construct()
{
// Nothing here
}
Add class to mapping.
| Type | Description |
|---|---|
| string | Class name |
| string | Full path to class |
NULL
public static function addClass($className, $classPath)
{
static::$classes[$className] = $classPath;
}
Add multiple classes to mapping.
| Type | Description |
|---|---|
| array | Array of classes to map (key = class name and value = class path) |
NULL
public static function addClasses(array $classes)
{
foreach($classes as $name => $path)
{
static::$classes[$name] = $path;
}
}
Adds a PSR-0 directory path.
| Type | Description |
|---|---|
| string | Path to PSR-0 directory |
NULL
public static function directory($path)
{
static::$psr[] = $path;
}
Set an alias for a class.
| Type | Description |
|---|---|
| string | Class alias |
| string | Class name |
NULL
public static function alias($alias, $className)
{
static::$aliases[$alias] = $className;
}
Autoloader.
| Type | Description |
|---|---|
| string | Class name |
boolean
public static function load($className)
{
$className = ltrim($className, '\\');
// Try to autoload an aliased class
if(isset(static::$aliases[$className]))
{
class_alias(static::$aliases[$className], $className);
}
// Try to load a mapped class
if(isset(static::$classes[$className]) && file_exists(static::$classes[$className]))
{
include static::$classes[$className];
return true;
}
// Try to load an application class
$fileName = MAKO_APPLICATION_PATH . '/' . str_replace('\\', '/', strtolower($className)) . '.php';
if(file_exists($fileName))
{
include $fileName;
return true;
}
// Try to load class from a PSR-0 compatible library
$fileName = '';
$namespace = '';
if($lastNsPos = strripos($className, '\\'))
{
$namespace = substr($className, 0, $lastNsPos);
$className = substr($className, $lastNsPos + 1);
$fileName = str_replace('\\', '/', $namespace) . '/';
}
$fileName .= str_replace('_', '/', $className) . '.php';
foreach(static::$psr as $path)
{
if(file_exists($path . '/' . $fileName))
{
include($path . '/' . $fileName);
return true;
}
}
return false;
}