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


PHP: Alias a function defined in another namespace using "as"

我在这里看到过一个非常相似的问题(和答案):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()在全局命名空间我得到一个"函数未定义"的错误。我使用PHP 5.6.25。谁能告诉我为什么不行?没有"as"(根据上面的链接问题),这似乎工作得很好。

编辑:

好的,我发现它正在发生因为定义和实际用法发生在两个不同的文件中。看来你必须把"use"子句放在每个可能使用这些函数的单独文件中。

在这种情况下,将是真正的笨拙,因为我必须以这种方式"定义"一大堆函数,并且在每个函数中重复一大块使用子句将破坏目的。

是否有办法让"use"语句从一个PHP文件工作到下一个(通过include)?

回答了我自己的问题,结果发现问题本身并不是我想的那样。

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