mirror of
https://gitee.com/fastadminnet/framework.git
synced 2026-07-01 12:42:48 +08:00
Merge branch 'master' of https://github.com/top-think/think
This commit is contained in:
@@ -19,6 +19,8 @@ class Loader
|
||||
protected static $load = [];
|
||||
// 命名空间
|
||||
protected static $namespace = [];
|
||||
// 命名空间别名
|
||||
protected static $namespaceAlias = [];
|
||||
// PSR-4
|
||||
private static $prefixLengthsPsr4 = [];
|
||||
private static $prefixDirsPsr4 = [];
|
||||
@@ -28,6 +30,16 @@ class Loader
|
||||
// 自动加载
|
||||
public static function autoload($class)
|
||||
{
|
||||
// 检测命名空间别名
|
||||
if (!empty(self::$namespaceAlias)) {
|
||||
$namespace = dirname($class);
|
||||
if (isset(self::$namespaceAlias[$namespace])) {
|
||||
$original = self::$namespaceAlias[$namespace] . '\\' . basename($class);
|
||||
if (class_exists($original)) {
|
||||
return class_alias($original, $class, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
// 检查是否定义类库映射
|
||||
if (isset(self::$map[$class])) {
|
||||
if (is_file(self::$map[$class])) {
|
||||
@@ -47,6 +59,7 @@ class Loader
|
||||
if (!strpos($class, '\\')) {
|
||||
return false;
|
||||
}
|
||||
// 解析命名空间
|
||||
list($name, $class) = explode('\\', $class, 2);
|
||||
if (isset(self::$namespace[$name])) {
|
||||
// 注册的命名空间
|
||||
@@ -94,6 +107,16 @@ class Loader
|
||||
}
|
||||
}
|
||||
|
||||
// 注册命名空间别名
|
||||
public static function addNamespaceAlias($namespace, $original = '')
|
||||
{
|
||||
if (is_array($namespace)) {
|
||||
self::$namespaceAlias = array_merge(self::$namespace, $namespace);
|
||||
} else {
|
||||
self::$namespaceAlias[$namespace] = $original;
|
||||
}
|
||||
}
|
||||
|
||||
// 注册自动加载机制
|
||||
public static function register($autoload = '')
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user