我在最新的项目中使用了composer,并将函数Map为
"require": {
...
},
"require-dev": {
...
},
"autoload": {
"psr-4": {
...
},
"files": [
"src/function/test-function.php"
]
}
我想象会有很多文件在一个文件夹功能,ex:real-function-1.php、real-function-2.php等。那么,composer是否可以调用文件夹中的所有文件function?i懒于使用
"files": [
"src/function/real-function-1.php",
"src/function/real-function-2.php",
..,
"src/function/real-function-100.php",
]
有没有像我这样懒的......
3条答案
按热度按时间pexxcrt21#
如果你不能命名你的函数(因为它会打断一堆代码,或者因为你不能使用PSR-4),并且你不想创建静态类来保存你的函数(然后可以自动加载),你可以创建你自己的全局包含文件,然后告诉composer包含它。
编写器.json
包括.php
这是不理想的,因为它将为每个请求加载每个文件,而不管其中的函数是否被使用,但它将工作。
注意:确保include文件在/real-function或类似的目录之外,否则它也会包含自身,变成递归函数,最终抛出内存异常。
yacmzcpb2#
现在有一个更好的方法来完成这个任务,而不需要任何自定义代码。如果你使用的是类,你可以使用Composer的classmap特性。如果你使用的是包含函数的单个文件,那么你必须使用
files[]
数组。mwecs4sa3#
这整个过程可以完全自动化,同时仍然相对良好地执行。
使用以下
package.json
(注意缺少自动加载条目,但是可以添加其他条目)然后......
注意事项:
preAutoloadDump
负责将autoload.php
入口点添加到composer。1.每次转储自动加载器时都会生成
autoload.php
(例如composer install
/composer update
/composer dump-autoload
)1.转储优化的自动加载器(
composer dump-autoload --optimize
)时,将仅加载在该点找到的文件。1.您还应该将
autoload.php
添加到.gitignore