DOMDocument не найден

0

Я пытаюсь закодировать свой собственный "Генератор 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

Я использую XAMPP 1.8.3 with PHP 5.5.15 на компьютере под управлением Windows 7.

Я также хочу упомянуть, что когда я использую $html = new \DOMDocument; в моем контроллере он работает отлично.

  • 0
    Использует ли класс DOMDocument пространство имен Services \ HtmlGenerator?
  • 0
    @user1187347 user1187347, нет, я просто использую его в этой области.
Показать ещё 6 комментариев
Теги:
domdocument

3 ответа

1

Это часто может быть вызвано отсутствием правильных модулей для PHP. Если на вашем сервере установлен дистрибутив Linux (например, CentOS), который поддерживает YUM, вы можете установить его с помощью следующей команды:

yum install php-xml.x86_64

Затем просто перезапустите apache (например: /etc/init.d/httpd restart), и он должен быть готов к работе.

0

При расширении класса из другого пространства имен вам необходимо использовать полное имя для выражения extends. Например:

<?php

namespace Services\HtmlGenerator;

class Html extends \DOMDocument
{
...
}

Обратите внимание на ведущую обратную косую черту в выражении extends

  • 0
    спасибо @ user1187347, но пространством имен DOMDocument является «\», то есть когда я пишу «\ DOMDocument», я уже предоставляю полное имя для класса. Пожалуйста, поправьте меня, если я ошибаюсь.
  • 1
    Нет, это следует делать, если вы используете обратную косую черту!
0

Добавьте use \DOMDocument; после строки пространства имен

  • 0
    Спасибо @RichardBernards, но я все еще получаю ту же ошибку: /. Кстати, я использую XAMPP 1.8.3 with PHP: 5.5.15 на компьютере с Windows 7.
  • 0
    @teeyo попробуй с дополнительной косой чертой (добавлено в ответе)
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню