我想要生成一個XML文件使用下面的類,當一個數組數據傳遞沒有深度限制時xml成功由下面的代碼生成。我只是想弄清楚如何self::createNode($value, $child);
聲明的作品創建一個新的對象?類構造函數中parent::_construct
語句的意義是什麼?因爲編碼已經在子類構造函數中初始化了。 從現在開始我讀到關於self關鍵字的是它用來調用靜態方法,但這裏的createNode方法是非靜態的。有人能夠幫助我理解這個語句的上下文,我可以在這裏說的是DomDocument類根本沒有任何createNode方法。任何人都可以提供幫助嗎? 非常感謝。如何自我在一個孩子類正確工作在PHP
class array2xml extends DomDocument
{
public $nodeName;
private $xpath;
private $root;
private $node_name;
public $xml_data;
public function __construct($root='root', $node_name='node')
{
parent::__construct();
$this->encoding = "UTF-8";
$this->formatOutput = true;
$this->node_name = $node_name;
$this->root = $this->appendChild($this->createElement($root));
$this->xpath = new DomXPath($this);
}
public function createNode($arr, $node = null)
{
if (is_null($node))
{
$node = $this->root;
}
foreach($arr as $element => $value)
{
$element = is_numeric($element)
? $this->node_name
: $element;
$element = htmlspecialchars($element,ENT_QUOTES,'UTF-8');
$child = $this->createElement($element, (is_array($value)
? null
: htmlspecialchars($value,ENT_QUOTES,'UTF-8')));
$node->appendChild($child);
if (is_array($value))
{
self::createNode($value, $child);
}
}
}
public function __toString()
{
$this->xml_data= $this->saveXML();
return $this->saveXML();
}
}
請告訴我,你的代碼確實有縮進... – Charles
嗨查爾斯是的它有縮進,它是在工作順序以及代碼沒有任何錯誤問題。 –
嗨,我再次縮進它,因爲這是我第一次發佈問題。是不是8空格縮進代碼?對不起,我在這裏很愚蠢。 –