配置composer autoload自动加载根目录
自动加载一般有两张方式实现,其一是直接使用spl_autoload_register()或autoload()自己写,其二用composer配置实现
框架中自己实现自动加载
require_once __DIR__ . '/../lib/Autoloader.php';
namespace lib;
/**
* 自动加载
*/
class Autoloader
{
public static function load($className)
{
$classPath = str_replace('\\', '/', $className);
$classFile = __DIR__ .'/../'.$classPath.'.php';
if (is_file($classFile)) {
require_once($classFile);
if (class_exists($className, false)) {
return true;
}
}
return false;
}
}
spl_autoload_register('\lib\Autoloader::load');
使用composer自动加载
代码
composer.json
"autoload": {
"files": [],
"psr-4": {
"": "./"
}
}
格式为“命名空间”: “路径”
"": "./" 意思是将跟命名空间映射到当前目录
这样写法不用每个目录都要去写一行,
当命名空间根目录名不一致的可以单个设置
"autoload": {
"files": [],
"psr-4": {
"app\\": "application/"
}
}
如此之前自己定义的自动加载类可以删去了,引入vendor/autoload.php就好
添加完autoload后使用composer install ,update或composer dumpautoload
来重新生成vendor/autoload.php