Я пытаюсь закодировать свой собственный "Генератор 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;
в моем контроллере он работает отлично.
Это часто может быть вызвано отсутствием правильных модулей для PHP. Если на вашем сервере установлен дистрибутив Linux (например, CentOS), который поддерживает YUM, вы можете установить его с помощью следующей команды:
yum install php-xml.x86_64
Затем просто перезапустите apache (например: /etc/init.d/httpd restart
), и он должен быть готов к работе.
При расширении класса из другого пространства имен вам необходимо использовать полное имя для выражения extends
. Например:
<?php
namespace Services\HtmlGenerator;
class Html extends \DOMDocument
{
...
}
Обратите внимание на ведущую обратную косую черту в выражении extends
Добавьте use \DOMDocument;
после строки пространства имен
XAMPP 1.8.3 with PHP: 5.5.15
на компьютере с Windows 7.