1 autoload
-
命名空间不是php与生俱来的。
-
要配合composer使用
-
支持四种模式:
-
psr-0:
-
先映射到目标文件所在的目录中,作为基目录。
-
再将类名进行解析为路径(下划线的驼峰)去寻找目标文件[夹](这里就要求类名与其路径名一致,驼峰)
-
可对可以懒加载的类使用
-
-
psr-4:
-
先映射到目标文件所在的目录中,作为基目录。
-
再命名空间直接映射到目标文件[夹]。(类名可与其路径不一样了)
-
可对可以懒加载的类使用
-
要求映射的键一定要用“\\”,且其末尾也要带“\\”
-
-
files:
-
精确列出php文件的路径
-
通常用于不可懒加载的php文件,如:只定义function的php文件
-
-
classmap:
-
列出需要扫描类文件的文件夹,得到一对一的精确映射,最快。
-
-
2 编写配置
2.1 配置如下:
{
"name": "test/autoload",
"description": "this is a composer's autoload test",
"type": "project",
"require": {
"php": ">=5.3.10"
},
"autoload": {
"files":[
"common/common.php"
],
"psr-4":{
"Controller\\":["src/controller"]
},
"classmap": [
"library/"
]
}
}
2.2 生成vendor
composer jumpautoload或composer update
- 在每一次修改composer.json之后,都必须运行上述命令之一,重新生成vendor,才能够正确引入命名空间。
- composer依赖生成的文件来注册register_autoload_function,最终实现自动载入。
2.3 验证

<?php
require_once __DIR__.'/vendor/autoload.php';
Controller\TestController::test();
commonTest();
LiTest::test();

1051

被折叠的 条评论
为什么被折叠?



