RoM*_*oMo 20 autoload composer-php psr-4
关于Laravel,我有一个关于Composer自动加载的问题,即"psr-4"和"classmap"自动加载之间的区别.
我知道的一个区别是PSR-4不需要dumpautoload
为每个更改或添加新文件重复,而classmap需要dumpautoload
包含类或在指定目录中添加新文件的现有文件中的每个更改.
Fin*_*nwe 38
PSR-4标准要求您使用基于命名空间的严格文件系统结构.假设您在src
目录中有一个带有App
命名空间的应用程序,那么所有子命名空间都将镜像子目录,并且类名称将与没有.php
扩展名的文件名相同.
{
"autoload": {
"psr-4": { "App\\": "src/" }
}
}
src/
Foo/
Bar.php <---- App\Foo\Bar class
Baz.php <---- App\Baz class
Run Code Online (Sandbox Code Playgroud)
然后,自动加载器"知道"在哪里查找某个完全限定名称的类,因此不需要dump-autoload命令来嗅探类的文件.
然后使用composer dump-autoload --optimize-autoloader
flag 解决性能问题,或者-o
,它将生成类映射,类似于类映射自动加载.
在另一方面,类映射自动加载不需要你有几乎任何特定的文件或目录的结构,它会递归经历.php
和.inc
在指定的目录和文件的文件和嗅探在他们班.
{
"autoload": {
"classmap": ["src/", "lib/", "Something.php"]
}
}
Run Code Online (Sandbox Code Playgroud)
然后将这些类添加到用于自动加载的列表(缓存在vendor/composer目录中的PHP文件中)中.
然后必须通过运行composer dump-autoload
命令将任何新类添加到该列表中.
归档时间: |
|
查看次数: |
8290 次 |
最近记录: |