我试图包含许多包含函数,类和调用的文件,但我想将所有内容放在PHP命名空间中。 我的问题是:所有文件都是另一个Web应用程序核心的一部分。所以我无法编辑文件。 有没有办法在全局范围内为文件列表声明命名空间? 这样的事情:
namespace mynamespace {
include_once("file1.inc.php");
include_once("file2.inc.php");
include_once("file3.inc.php");
...
}
当然我尝试了这段代码并且它不起作用;注释命名空间mynamespace;。
的包含文件的第一行时,我的所有尝试都失败了答案 0 :(得分:2)
不,这是不可能的。每个文件都需要声明自己的命名空间;你不能使用外部代码强制某些东西在不同的命名空间中。 (像runkit这样的一些黑客可能会让你摆弄它,但我认为这超出了PHP作为一种语言的常规范围。)
答案 1 :(得分:0)
是的。有点麻烦(您需要列出所有类),并且仅当您具有以<?php
开头且没有命名空间的行为良好的文件时才起作用。另外,由于评估的东西中没有适当的错误报告,因此只能将它与经过良好测试的代码一起使用。
<?php
namespace whatever;
use mynamespace\Class1FromFile1;
use mynamespace\Class2FromFile1;
use mynamespace\ClassFromFile2;
use mynamespace\ClassFromFile3;
function ns_inc ($lib, $ns) {
eval("namespace $ns;" . substr(file_get_contents($lib), 5));
}
$ns= 'mynamespace';
ns_inc('file1.inc.php', $ns);
ns_inc('file2.inc.php', $ns);
ns_inc('file3.inc.php', $ns);