arn*_*lds 5 php namespaces function autoload composer-php
无法使用PHP.net 中use function描述的关键字导入函数。在本地重新创建示例将返回一个.PHP Fatal error: Uncaught Error: Call to undefined function
作曲家.json
{
"autoload": {
"psr-4": {
"My\\": ""
}
}
}
Run Code Online (Sandbox Code Playgroud)
完整的.php
<?php
namespace My\Full;
function functionName()
{
echo 'Hello Stackoverflow';
}
Run Code Online (Sandbox Code Playgroud)
索引.php
<?php
require 'vendor/autoload.php';
use function My\Full\functionName as func;
func();
Run Code Online (Sandbox Code Playgroud)
注意:我知道我可以要求该文件,但我想知道不这样做是否可行。
use function 不包含任何文件或函数定义,它只是将完全限定的函数名称作为别名,这意味着在调用函数时不需要指定命名空间。
在您的示例中,您使用的作曲家非常适合自动包含文件,但是来自https://www.php-fig.org/psr/psr-4/ PSR-4 是
从文件路径自动加载类的规范
它不会自动加载不符合此规范的函数或文件。
但是,您可以使用 composer 自动包含此类情况的文件。你需要更新你的 composer.json 然后运行composer dumpautoload
作曲家.json
{
"autoload": {
"files": ["full.php"]
}
}
Run Code Online (Sandbox Code Playgroud)
然后你的其余部分可以保持不变,它应该可以工作。