mpe*_*pen 42 autoload psr-0 composer-php
如何自动加载辅助函数(在任何类之外)?我可以在composer.json某种应该先加载的引导程序文件中指定吗?
mpe*_*pen 67
您可以通过编辑文件来自动加载特定文件,composer.json如下所示:
"autoload": {
"files": ["src/helpers.php"]
}
Run Code Online (Sandbox Code Playgroud)
(谢谢Kint)
Anw*_*war 11
经过一些测试,我得出的结论是,将命名空间添加到包含函数的文件,并设置 composer 自动加载此文件似乎不会在所有需要自动加载路径的文件中加载此函数。
为了综合,这将在任何地方自动加载您的函数:
作曲家.json
"autoload": {
"files": [
"src/greetings.php"
]
}
Run Code Online (Sandbox Code Playgroud)
src/greetings.php
<?php
if( ! function_exists('greetings') ) {
function greetings(string $firstname): string {
return "Howdy $firstname!";
}
}
?>
Run Code Online (Sandbox Code Playgroud)
...
但这不会在自动加载的每个要求中加载您的功能:
作曲家.json
"autoload": {
"files": [
"src/greetings.php"
]
}
Run Code Online (Sandbox Code Playgroud)
src/greetings.php
<?php
namespace You;
if( ! function_exists('greetings') ) {
function greetings(string $firstname): string {
return "Howdy $firstname!";
}
}
?>
Run Code Online (Sandbox Code Playgroud)
您可以使用use function ...;以下方法调用您的函数:
示例/示例-1.php
<?php
require( __DIR__ . '/../vendor/autoload.php' );
use function You\greetings;
greetings('Mark'); // "Howdy Mark!"
?>
Run Code Online (Sandbox Code Playgroud)