在PHP中重置命名空间?

rye*_*guy 6 php namespaces

如何将命名空间"重置"为全局命名空间?给出以下代码:

namespace foo;
include 'myfile.php';
Run Code Online (Sandbox Code Playgroud)

myfile.php现在将尝试在foo命名空间中加载它的所有类,即使它的类在全局命名空间中.现在交换这些行的顺序并不是什么大不了的事,但是我如何处理有自动加载器的myfile.php?它将尝试在命名空间foo中加载类.

Jos*_*vis 12

命名空间基于每个文件工作.如果myfile.php没有声明任何命名空间,那么无论include使用哪个命名空间,其中的所有内容都将属于全局命名空间.

长话短说,namespace声明只适用于自己的文件,不包括.


JSB*_*ոգչ 8

myfile.php应该声明它想要的命名空间.如果你想确保myfile.php加载到全局命名空间,我相信你可以放

namespace // empty namespace means global
{
}
Run Code Online (Sandbox Code Playgroud)

围绕myfile.php的主体.确保使用大括号,否则您将重新定义包含myfile.php的文件的其余部分也在全局命名空间中.

  • 您不需要那个空名称空间声明.它不会*影响包含它的文件,因为`namespace`声明仅适用于它们自己的文件. (3认同)