TP5类的自动加载
学会了作用就是:可以在框架中任意地方创建类,并调用
类的自动加载代码原理这里就说不清了,我兴趣的可以看看慕课网singwa老师的课:
https://coding.imooc.com/class/331.html
下面直接介绍如何使用:
类的加载文件路径:项目根目录\thinkphp\library\think\Loader.php
流程:index.php(入口文件)-》base.php-》Loader.php
1.如果关系到命名空间调用一个类:
在Loader.php文件中的register()方法里对应的地方加入这个类的"首目录"
$rootPath = self::getRootPath();//获取根目录
// 注册命名空间定义(键是命名空间,键值是命名空间路径)
self::addNamespace([
'think' => __DIR__,
'traits' => dirname(__DIR__) . DIRECTORY_SEPARATOR . 'traits',
'script' => $rootPath.'script',
]);
这里引入了根目录下的"script"目录,那么则可调用"script"目录里的类或"script"目录里的文件夹下的类
2.如果不关系到命名空间,只关系到目录调用一个类:
这种方法也适用于需要命名空间的,调用一个类的情况
在Loader.php文件中的register()方法里对应的地方加入这个类的"首目录"
// 自动加载extend目录(命名空间不需再加这个目录,直接下面的文件夹开头则行,必须是文件夹下类)
self::addAutoLoadDir($rootPath . 'extend');
self::addAutoLoadDir($rootPath . 'script');
self::addAutoLoadDir($rootPath.'thinkphp'.DIRECTORY_SEPARATOR.'library'.DIRECTORY_SEPARATOR.'ali');//这样不行
self::addAutoLoadDir($rootPath.'thinkphp'.DIRECTORY_SEPARATOR.'library');//这样才行
这里引入了根目录下的"script"目录,那么则可以调用里面的类,也可以用命名调用