* @copyright walkor * @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');