我在这里看到过一个非常相似的问题(和答案):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"子句放在每个可能使用这些函数的单独文件中。