在PHP中使用命名空间的新功能已经达到了一些我不太了解的东西。
档案:common.php
namespace Base;
function c_foo(){ return 0 };
file:worker.php
这不起作用:
namespace Base\Worker;
Class worker {
public function do_work(){ return c_foo() ) }; <--unknown function "c_foo"
}
这有效:
namespace Base\Worker;
use Base;
Class worker {
public function do_work(){ return Base\c_foo() ) };
}
我发现需要在{namespace}\
前面进行函数调用,这有点尴尬。我做错了什么,是否有更好的方法使父命名空间函数在子命名空间中可用?
答案 0 :(得分:1)
它不起作用,因为当您调用c_foo()
时,php将搜索在Base\Worker
命名空间下定义的函数。 (Base\Worker\c_foo()
)。从php 5.6你可以导入函数。
use function Base\c_foo;
答案 1 :(得分:1)
因为您已在文件顶部声明了名称空间Base\Worker
,所以如果您想要使用该名称空间之外的内容,则需要将其名称空间及其名称包含在内。
你应该可以这样做:
namespace Base\Worker;
use function Base\c_foo; // php >= 5.6
c_foo();