69 lines
1.8 KiB
PHP
69 lines
1.8 KiB
PHP
<?php
|
|
/**
|
|
* This file is part of workerman.
|
|
*
|
|
* Licensed under The MIT License
|
|
* For full copyright and license information, please see the MIT-LICENSE.txt
|
|
* Redistributions of files must retain the above copyright notice.
|
|
*
|
|
* @author walkor<walkor@workerman.net>
|
|
* @copyright walkor<walkor@workerman.net>
|
|
* @link http://www.workerman.net/
|
|
* @license http://www.opensource.org/licenses/mit-license.php MIT License
|
|
*/
|
|
namespace Workerman;
|
|
|
|
/**
|
|
* Autoload.
|
|
*/
|
|
class Autoloader
|
|
{
|
|
/**
|
|
* Autoload root path.
|
|
*
|
|
* @var string
|
|
*/
|
|
protected static $_autoloadRootPath = '';
|
|
|
|
/**
|
|
* Set autoload root path.
|
|
*
|
|
* @param string $root_path
|
|
* @return void
|
|
*/
|
|
public static function setRootPath($root_path)
|
|
{
|
|
self::$_autoloadRootPath = $root_path;
|
|
}
|
|
|
|
/**
|
|
* Load files by namespace.
|
|
*
|
|
* @param string $name
|
|
* @return boolean
|
|
*/
|
|
public static function loadByNamespace($name)
|
|
{
|
|
$class_path = \str_replace('\\', \DIRECTORY_SEPARATOR, $name);
|
|
if (\strpos($name, 'Workerman\\') === 0) {
|
|
$class_file = __DIR__ . \substr($class_path, \strlen('Workerman')) . '.php';
|
|
} else {
|
|
if (self::$_autoloadRootPath) {
|
|
$class_file = self::$_autoloadRootPath . \DIRECTORY_SEPARATOR . $class_path . '.php';
|
|
}
|
|
if (empty($class_file) || !\is_file($class_file)) {
|
|
$class_file = __DIR__ . \DIRECTORY_SEPARATOR . '..' . \DIRECTORY_SEPARATOR . "$class_path.php";
|
|
}
|
|
}
|
|
|
|
if (\is_file($class_file)) {
|
|
require_once($class_file);
|
|
if (\class_exists($name, false)) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
|
|
\spl_autoload_register('\Workerman\Autoloader::loadByNamespace'); |