3

我在 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 是这个错误的一个可能原因。但我找不到任何指向这一点的东西。

4

1 回答 1

4

简而言之,是引入了命名空间(ZF2 大量使用的 PHP 5.3 的特性,但 ZF 1.x 没有)导致了这个错误。有了这条线...

$dom = new DOMDocument(...)

... ZF 仅检查当前导入的命名空间是否为此类。它会导致失败,因为DOMDocument类实际上属于全局命名空间。

解决方法很简单,当你看到原因时:在类名前面使用global namespace specifier-符号-。\像这样:

$dom = new \DOMDocument(...)
于 2012-11-10T15:56:43.580 回答