use函数不会在PHP中导入函数

时间:2018-07-26 21:08:10

标签: php function namespaces composer-php autoload

无法使用PHP.net中所述的use function关键字导入函数。在本地重新创建示例将返回PHP Fatal error: Uncaught Error: Call to undefined function


enter image description here

composer.json

{
    "autoload": {
        "psr-4": {
            "My\\": ""
        }
    }
}

full.php

<?php

namespace My\Full;

function functionName()
{
    echo 'Hello Stackoverflow';
}

index.php

<?php

require 'vendor/autoload.php';

use function My\Full\functionName as func;

func();

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

1 个答案:

答案 0 :(得分:1)

use function不包含任何文件或函数定义,它只是为完全限定的函数名起别名,这意味着在调用函数时无需指定名称空间。

在您的示例中,您使用的composer非常适合自动包含文件,但是https://www.php-fig.org/psr/psr-4/ PSR-4中的文件是

  

从文件自动加载类的规范   路径

它不会自动加载不符合此规范的功能或文件。

但是,您可以使用composer在这种情况下自动包括文件。您需要更新composer.json,然后运行composer dumpautoload

composer.json

{
    "autoload": {
        "files": ["full.php"]
    }
}

其余的可以保持不变,并且应该可以正常工作。