我正在尝试编写自己的“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;
时,它的工作正常。
答案 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
语句