实际上我的问题非常简单。在PHP中,我可以在将要加载require或include的文件中定义名称空间。 例如:
index.php的内容
namespace test;
require('example.php');
die(__NAMESPACE__);
example.php的内容
namespace example;
echo "hello world";
如果执行此代码,输出将为" test",因为如果包含具有其他命名空间的文件,则命名空间不会更改。
但你能告诉我为什么吗?我怎么能想象解析器呢? 它可能看起来像:
namespace test{}
namespace example{}
// and here it goes on with test, but why I didn´t said namespace test
namespace test{}
答案 0 :(得分:0)
在PHP文件中,namespace
声明后的所有代码都属于该命名空间。这包括require
语句。
每个PHP文件都有自己的__NAMESPACE__
值,该值在声明namespace
时填充。要访问另一个文件的命名空间,您可以在example.php
中创建一个返回__NAMESPACE__
的方法。请参阅this question。
或者,您可以使用get_current_namespaces()
,但这不会告诉您哪个命名空间属于哪个文件。