假设每个函数有 1 个文件:
/src/Helpers/fooHelper.php
<?php
namespace MyHelper;
function fooHelper() {};
/src/Helpers/barHelper.php
<?php
namespace MyHelper;
function barHelper() {};
我看到有
"autoload": {
"files": ["src/Helpers/functions.php"]
}
是否可以通过 Composer 按需自动加载这些函数,而不是每次请求?
是否可以通过 Composer 按需自动加载这些函数,而不是每次请求?
不,PHP 中的函数不支持自动加载。您需要手动加载它们,或者将带有函数声明的文件添加到
autoload.files
中的 composer.json
配置中 - 即使您从不使用它,它们也会在每个请求上加载。
目前唯一明智的解决方法是将助手包装在某个静态类中,该静态类可以毫无问题地自动加载。
class MyHelper {
public static function fooHelper() {}
public static function barHelper() {}
}
MyHelper::fooHelper();
MyHelper::barHelper();
我之前确实遇到过这个问题,并找到了一个简单的解决方案,我在几个项目中实现了这个问题,没有任何问题
我发现,如果类和函数命名空间匹配,可以在类的构造函数中定义函数。
我的解决方案:
函数文件myfunction.php
namespace Foo;
function myFunction(){
return "string";
}
某堂课:
namespace Foo;
class myClass{
public function __construct(){
include __DIR__.'myfunction.php';
}
public function printFunction(){
echo myFunction();
}
}
如果您想为每个帮助文件添加它,您应该执行以下操作:
"autoload": {
"files" : [
"path_to file_1.php",
"path_to file_2.php",
"and so on"
]
}
运行命令后应该可以工作:
composer dump-autoload
或composer dumpautoload
。