如何自动加载辅助函数(在任何类之外)?我可以在composer.json
中指定某种应该首先加载的引导程序文件吗?
答案 0 :(得分:63)
您可以autoload specific files编辑composer.json
文件,如下所示:
"autoload": {
"files": ["src/helpers.php"]
}
(谢谢Kint)
答案 1 :(得分:2)
经过一些测试,我得出的结论是,将命名空间添加到包含函数的文件中,并设置composer来自动加载此文件似乎无法在需要自动加载路径的所有文件中加载此功能。
要进行合成,这将在所有位置自动加载函数:
composer.json
"autoload": {
"files": [
"src/greetings.php"
]
}
src / greetings.php
<?php
if( ! function_exists('greetings') ) {
function greetings(string $firstname): string {
return "Howdy $firstname!";
}
}
?>
...
但这不会在自动加载的所有需求中加载您的函数:
composer.json
"autoload": {
"files": [
"src/greetings.php"
]
}
src / greetings.php
<?php
namespace You;
if( ! function_exists('greetings') ) {
function greetings(string $firstname): string {
return "Howdy $firstname!";
}
}
?>
您将使用use function ...;
调用函数,如下所示:
example / example-1.php
<?php
require( __DIR__ . '/../vendor/autoload.php' );
use function You\greetings;
greetings('Mark'); // "Howdy Mark!"
?>
答案 2 :(得分:-3)
composer.json
中添加自动加载信息{
"autoload": {
"psr-4": {
"Vendor\\Namespace\\": "src/"
}
}
}
OwnFunctions.php
文件夹中使用函数创建一个src/Functions
// recommend
// http://php.net/manual/en/control-structures.declare.php
declare(strict_types=1);
namespace Vendor\Namespace\Functions\OwnFunctions;
function magic(int $number): string {
return strval($number);
}
index.php
中要求作曲家自动加载declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use function Vendor\Namespace\Functions\OwnFunctions\magic;
echo magic(1);
// or you can use only OwnFunctions namespace
use Vendor\Namespace\Functions\OwnFunctions;
echo OwnFunctions\magic(1);
这也可以用const
完成use const Vendor\Namespace\Functions\OwnFunctions\someConst;
echo someConst;