在我用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;