php - use function 不导入 PHP 中的函数

标签 php function namespaces composer-php autoload

无法使用 PHP.net 中描述的 use function 关键字导入函数。在本地重新创建示例将返回 PHP fatal error :未捕获错误:调用未定义的函数

<小时/>

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();
<小时/>

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

最佳答案

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

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

a specification for autoloading classes from file paths

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

但是,您可以使用 Composer 自动包含此类情况的文件。您需要更新您的composer.json,然后运行composer dumpautoload

composer.json

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

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

关于php - use function 不导入 PHP 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51547511/

相关文章:

php - 让 php 从 Mysql 自动填充电子邮件地址

Scala 函数组合

xml - 删除包含 xmlns 属性的 XML 元素

python - 删除模块以清理命名空间?

javascript - 使用 PHP 更新部分网页

php - 在php中的应用范围

php - 使用 PHP 和 Regex 提取正文 HTML 并清理注释

c - 函数 localtime() 是如何使用的?

python - 导入模块/函数的方式有哪些?

c++ - 多次包含命名空间的链接器错误