如何解决命名空间和类的冲突?

时间:2017-02-09 22:29:00

标签: php class namespaces

在我用PHP编写的项目中,我有名称空间UniCAT和MarC(以及其他一些)。

它们中的每一个都有特殊用途的类 - 最初具有命名空间的名称。在类MarC从该命名空间之外的命名空间遇到其他类的情况之前,该类的命名不会导致问题。

然后找不到其他类(不是MarC) - 因为类的名称被视为子命名空间。从

MarC\class

MarC\MarC\class

我将具有名称空间名称的类重命名为Core并使用

use MarC\Core as MarC;

但是现在,这是非常奇怪的,我有(它在任何命名空间之外)

$VMaX = new MarC\DTDLine(MarC\Core::MARC_CODE_XHTML1TRANS);
$VMaX -> Set_ElementList('VMaX-MarC/DTD/xhtml1-strict.dtd');

并出现错误,并说找不到类Core。这对我来说非常奇怪 - 因为所有路径都是相同的(当然,除了改变类及其文件的名称)。

  

致命错误:未捕获错误:在H:\ WWW \ Kilometrovnik \ VMaX-MarC \ Base.Classes \ DTDLine.Class.php中找不到类'Core':38堆栈跟踪:#0 H:\ WWW \ Kilometrovnik \ test.php(9):MarC \ DTDLine-> __ construct('

在DTD类的第38行,我使用了

MarC::Set_Instance();

将准备好的变量保存在课程Core(别名MarC)中。在DTDLine类文件的标题中我有

namespace MarC;

use UniCAT\Core as UniCAT;
use UniCAT\MethodScope;
use Core as MarC;

0 个答案:

没有答案