TP框架自动加载优先级

Posted leayrainy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TP框架自动加载优先级相关的知识,希望对你有一定的参考价值。

$map = array(Think\Log=>THINK_PATH.Think\Log.php,Org\Util\Array=>THINK_PATH.Org\Util\Array.php);
Think\Think::addMap($map);

 

 

以Test\MyClass类为例,自动加载的优先顺序如下:

1.在alias.php中或者addMap方法中判断是否注册了

Test\MyClass类映射,如果有则自动加载类库映射定义的文件;

2.判断是否存在Library/Test目录,有则以该目录为初始目录加载;

3.判断是否有注册Test根命名空间,有则以注册的目录为初始目录加载;

4.如果以上都不成立,则以Test为模块进行初始目录加载;

 

关于自动加载

1.在library目录下面任意增加新目录=自动注册成一个新的根命名空间。

2.注册新的根命名空间。

AUTOLOAD_NAMESPACE => array(
    My     => THINK_PATH.My,
    One    => THINK_PATH.One,
)
new My\Net\IpLocation();

new One\Util\Log();

3.类库映射。 addMap方法和alias.ph配置文件。

$map = array(Think\Log=>THINK_PATH.Think\Log.php,Org\Util\Array=>THINK_PATH.Org\Util\Array.php);
Think\Think::addMap($map);

 

以上是关于TP框架自动加载优先级的主要内容,如果未能解决你的问题,请参考以下文章

tp框架之函数调用

thinkphp5源码剖析系列1-类的自动加载机制

TP5代码学习笔记:Loader

TP5自动生成模块

tp框架命名空间

TP框架的业务逻辑谁能给我说说