找不到DOMDocument

时间:2014-11-20 09:43:52

标签: php domdocument

我正在尝试编写自己的“HTML生成器”代码,因此我不再需要将HTML作为字符串编写,但问题是PHP无法识别DOMDocument类,它会尝试使用在相同的命名空间中命名DOMDocument,这会引发错误,我尝试添加backslah但没有运气,这是我的代码:

<?php

namespace Services\HtmlGenerator;

use \DOMDocument;

/**
* Services\HtmlGenerator\Html
*/
class Html extends DOMDocument
{

    function __construct(){
         parent::__construct('1.0','iso-8859-1' );
         $this->formatOutput = true;
    }

    public function createInput($value, $name, $class = null)
    {
        $input = $this->createElement('input');
        $input->setAttribute('value', $value);
        $input->setAttribute('name', $name);
        $input->setAttribute('class', $class);
        return $input;
    }
}

控制器中使用此类的操作代码:

<?php

namespace ModuleX\RemoteControllers;

use Services\HtmlGenerator\Html;
//...

class RemoteXController extends RemoteController
{
 //...
public function action()
{
    $html = new Html;
    $elem = $html->createInput('test', 'test', 'test');
    $html->appendChild($elem);
    return $html->saveHTML();

以下是错误消息:

Fatal error: Class 'Services\HtmlGenerator\DOMDocument' not found in C:\xampp\htdocs\erp\services\htmlGenerator\Html.php on line 10

我在Windows 7计算机上使用XAMPP 1.8.3 with PHP 5.5.15

我还想提一下,当我在我的控制器中使用$html = new \DOMDocument;时,它的工作正常。

3 个答案:

答案 0 :(得分:1)

这通常可能是因为没有为PHP安装正确的模块。如果您的服务器运行支持YUM的Linux发行版(如CentOS),您可以使用以下命令安装它:

yum install php-xml.x86_64

然后只需重新启动apache(例如:/etc/init.d/httpd restart),就可以开始了。

答案 1 :(得分:0)

在命名空间行

之后添加use \DOMDocument;

答案 2 :(得分:0)

从另一个名称空间扩展类时,需要为extends语句使用完全限定名。例如:

<?php

namespace Services\HtmlGenerator;

class Html extends \DOMDocument
{
...
}

注意extends语句

上的前导反斜杠