使用函数不会在 PHP 中导入函数

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)

注意:我知道我可以要求该文件,但我想知道不这样做是否可行。

MC5*_*C57 6

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)

然后你的其余部分可以保持不变,它应该可以工作。