2015-03-19 74 views
0

我試圖延長SimpleXMLElement類提供一種機制,以子XML字符串或其他的SimpleXMLElement合併到我的的SimpleXMLElement,該代碼是基於code written by Carlos C Soto in an answer的問題"PHP - SimpleXML - AddChild with another SimpleXMLElement"演員對象的子類在PHP

現在我在子類中只增加了addXml功能(應通過返回新創建的元素工作模內置的addChild),但我想,每一個函數調用將返回一個的SimpleXMLElement,而不是我的新創建子類。有沒有辦法在PHP中媲美Java?

有人認爲沒有任何理由到downvote編輯:我不是Java開發人員和通常我我就不會有這樣那樣的問題,但的SimpleXMLElement甚至介意是一個PHP類,所以我不能輕易換它沒有寫很多代碼。也許某種反思魔術使這成爲可能?

回答

1

當您從的SimpleXMLElement延長父方法會給您帶來新的類型:

class MyXml extends SimpleXMLElement 
{ 
} 

$xml = new MyXml('<root />'); 

$child = $xml->addChild('child'); 

var_dump(get_class($child)); # string(5) "MyXml" 

這是特定於的SimpleXMLElement和一般不是PHP。所以你永遠不得不嘗試。這是對你的問題發表評論的人試圖告訴你的人。

接下來,simplexml_import_dom function有第二個參數,您可以爲其命名該類名稱。您也可以通過一個SimpleXMLElement對象,然後PHP將從該實例中獲取類名稱。