我在我的最新项目中使用composer并像我这样映射我的函数
"require": {
...
},
"require-dev": {
...
},
"autoload": {
"psr-4": {
...
},
"files": [
"src/function/test-function.php"
]
}
我想文件夹函数中会有很多文件,例如:real-function-1.php,real-function-2.php等。那么,作曲家可以调用文件夹函数中的所有文件吗?我懒得用
"files": [
"src/function/real-function-1.php",
"src/function/real-function-2.php",
..,
"src/function/real-function-100.php",
]
有没有像我这样的懒人......
答案 0 :(得分:17)
如果你不能命名你的函数(因为它会破坏一堆代码,或者因为你不能使用PSR-4),并且你不想创建保存你的函数的静态类(可能然后自动加载),你可以创建自己的全局包含文件,然后告诉作曲家包含它。
<强> composer.json 强>
{
"autoload": {
"files": [
"src/function/include.php"
]
}
}
<强> include.php 强>
$files = glob(__DIR__ . '/real-function-*.php');
if ($files === false) {
throw new RuntimeException("Failed to glob for function files");
}
foreach ($files as $file) {
require_once $file;
}
unset($file);
unset($files);
这是不理想的,因为它会为每个请求加载每个文件,无论其中的函数是否被使用,但它都可以工作。
答案 1 :(得分:7)
在没有任何自定义代码的情况下,现在实际上有更好的方法。如果您正在使用课程,则可以使用Composer's classmap feature。如果您正在处理包含函数的单个文件,则必须使用files[]
数组。
{
"autoload": {
"classmap": ["src/", "lib/", "Something.php"]
}
}