如何自动加载辅助函数(在任何类之外)?我可以在composer.json
某种应该首先加载的引导文件中指定吗?
问问题
23084 次
3 回答
12
经过一些测试,我得出的结论是,将命名空间添加到包含函数的文件中,并设置 composer 来自动加载这个文件似乎不会在所有需要自动加载路径的文件中加载这个函数。
为了综合,这将在任何地方自动加载你的函数:
作曲家.json
"autoload": {
"files": [
"src/greetings.php"
]
}
src/greetings.php
<?php
if( ! function_exists('greetings') ) {
function greetings(string $firstname): string {
return "Howdy $firstname!";
}
}
?>
...
但这不会在自动加载的每个要求中加载您的函数:
作曲家.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-1.php
<?php
require( __DIR__ . '/../vendor/autoload.php' );
use function You\greetings;
greetings('Mark'); // "Howdy Mark!"
?>
于 2018-11-03T21:15:33.867 回答
-5
- 添加自动加载信息
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;
于 2018-09-27T09:00:47.383 回答