Tia*_*ati 16 php autoload composer-php
我在我的最新项目中使用了composer并像这样映射我的函数
"require": {
...
},
"require-dev": {
...
},
"autoload": {
"psr-4": {
...
},
"files": [
"src/function/test-function.php"
]
}
Run Code Online (Sandbox Code Playgroud)
我想文件夹中会有很多文件,ex: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",
]
Run Code Online (Sandbox Code Playgroud)
有没有像我这样的懒人......
Aus*_*tin 22
如果你不能命名你的函数(因为它会破坏一堆代码,或者因为你不能使用PSR-4),并且你不想创建保存你的函数的静态类(然后可以自动加载),你可以创建自己的全局包含文件,然后告诉作曲家包含它.
composer.json
{
"autoload": {
"files": [
"src/function/include.php"
]
}
}
Run Code Online (Sandbox Code Playgroud)
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);
Run Code Online (Sandbox Code Playgroud)
这是不理想的,因为它将为每个请求加载每个文件,无论其中的函数是否被使用,但它都可以工作.
实际上,没有任何自定义代码,实际上有更好的方法.如果您正在使用类,则可以使用Composer的类映射功能.如果您正在处理包含函数的单个文件,则必须使用该files[]数组.
{
"autoload": {
"classmap": ["src/", "lib/", "Something.php"]
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16801 次 |
| 最近记录: |