我正在使用Windows 7(64位)系统上的Zend Server CE。
我正在使用Zend Framework 2.0开发一个网站。在这个网站中,我使用DOMDocument来分析外部网站(由URL提供)。
我使用Zend Framework 1.12和Zend Server CE 4(PHP 5.2)开始了这个项目。现在我安装了Zend Server CE 5.6.0(apache2.2,PHP 5.3.14,ZF2-Support)。我用ZF2.0重建我的项目。一切都很好......除了一个功能。
当我尝试实例化DOMDocument时,我得到了这个错误消息(php-error.log):
Fatal error: Class 'Application\Controller\DOMDocument' not found in
_Path_\module\Application\src\Application\Controller\SearchbarController.php on line 81
使用PHP 5.2(ZF 1.12)和Zend Server CE 4,此功能完美运行。但是现在......没有任何改变,它会抛出这个错误。
dom-extension和xml-extension在PHP 5.3中内置。我检查了phpinfo和我的php.ini,这些扩展正在运行。
我读过,我应该安装php-xml。但dom,xml和libxml正在运行......为什么我要重新安装它们?
我不知道为什么升级Zend Server CE后无法实例化DOMDocument。可能是,ZF2.0是导致此错误的可能原因。但我找不到任何指向这个的东西。
答案 0 :(得分:4)
简而言之,它引入了名称空间(ZF2非常频繁使用的PHP 5.3的功能 - 但不是ZF 1.x)导致了这个错误。有了这条线......
$dom = new DOMDocument(...)
...仅ZF为此类检查当前导入的命名空间。它导致失败,因为DOMDocument
类实际上属于全局命名空间。
解决方案很简单,当您看到原因时:在类名前面使用global namespace specifier
- \
符号。像这样:
$dom = new \DOMDocument(...)