2013-10-22 56 views
0

我有一個用於產生以如下方式一些HTML PHP類上:PHP的DomDocument的appendChild()非對象

public $rName; 
public $cName; 
public $rMonth; 

function __construct(){ 
    $this->report = new DOMDocument; 
    $this->report->loadHTMLFile('template.php'); 
} 

private function addComponent($tag, $content){ 
    $parent = $this->report->getElementById('content'); 
    $child = $this->report->createElement($tag, $content); 
    $parent->appendChild($child); 
} 

function addSection($header){ 
    $this->addComponent('h2', $header); 
} 

function addSubHeader($subHeader){ 
    $this->addComponent('h3', $subHeader); 
} 

function addContent($content){ 
    $this->addComponent('p', $content); 
} 

正被稱爲像這樣:

$report = new Report; 

$outputType = $_GET['outputType']; 

$report->rName = 'rName'; 
$report->cName = $_GET['cName']; 
$report->rMonth = $_GET['rMonth']; 

$report->addSection('Section'); 
$report->addSubHeader('SubHeader'); 
$report->addContent('Content'); 

在Windows上使用XAMPP,這段代碼工作得很好。然而在CentOS的環境我得到的錯誤:

Call to a member function appendChild() on a non-object on line 16

第16行是:

template.php文件中似乎加載,有與「內容」的ID的DIV但是,$ parent上的gettype()將其顯示爲NULL。

當時很難過。有任何想法嗎?

回答

1

在舊版本的PHP中,getElementById要求在DTD中指定id屬性。

在這種情況下,在HTML的開頭插入<!DOCTYPE html>就足夠了。

+0

是的,這是失蹤的doctype做到了:) – HelloWorld