PHP:别名使用"在另一个命名空间中定义的函数"

时间:2016-09-14 17:02:29

标签: php namespaces

我在这里看到了一个非常相似的问题(和答案):https://stackoverflow.com/a/20933938/339440 ......但它并没有完全符合我的需要。

我有这个:

<?php
namespace My\Project {
    function foo() {
        ...do stuff...
        return $something;
    }
}

namespace {  // global namespace
    function prefix_foo() { return My\Project\foo(); }

}

我想要的全局命名空间是:

namespace {
    use function My\Project\foo as prefix_foo;
}

...但是每当我尝试在全局命名空间中调用prefix_foo()时,我都会得到一个未定义的&#34;函数&#34;错误。我使用的是PHP 5.6.25。谁能告诉我为什么这不起作用?似乎没有&#34; as&#34; (根据上面的相关问题)。

修改 好吧,我发现它正在发生,因为定义和实际使用情况发生在两个不同的文件中。看来你必须把&#34;使用&#34;每个单独文件中可能使用这些函数的子句。

在这种情况下,这将真的笨重,因为我必须&#34;定义&#34;这样一大堆功能,并在每个功能中重复使用一大块使用条款会使目的失败。

有没有办法让&#34;使用&#34;声明从一个PHP文件到下一个(通过包含)?

1 个答案:

答案 0 :(得分:0)

回答了我自己的问题,事实证明问题本身并不是我认为的那样。

我在两个不同的文件中有定义和实际用法。您必须在可能使用这些函数的每个单独文件中放置“use”子句。