我试图扩展SimpleXMLElement类,以提供一种机制,将子XML或其他SimpleXMLElement,合并到我的SimpleXMLElement,代码中,这是基于code written by Carlos C Soto in an answer到问题https://stackoverflow.com/q/4778865/367456的。
现在,我只在子类中添加一个SimpleXMLElement函数(应该通过返回新创建的元素来模拟在addChild
中构建的函数),但我猜每个函数调用都将返回一个addXml
,而不是我新创建的子类。在PHP中有一种方法可以与Java相媲美吗?
编辑,因为有人认为没有任何理由会否决:我不是,通常我也不会介意,即使是这样的问题,但SimpleXMLElement是一个PHP类,所以我不能轻松地包装它而不编写大量的代码。也许是某种反射魔法让这一切成为可能?
发布于 2015-03-19 17:24:53
当您从SimpleXMLElement扩展时,父方法将为您提供新类型:
class MyXml extends SimpleXMLElement
{
}
$xml = new MyXml('<root />');
$child = $xml->addChild('child');
var_dump(get_class($child)); # string(5) "MyXml"
这是特定于SimpleXMLElement的,而不是一般的PHP。所以你总是得试试。这就是那个评论你问题的人想告诉你的。
接下来, function有第二个参数,您可以为它命名类名。您也可以为它传递一个SimpleXMLElement对象,然后PHP将从实例中获取类名。
https://stackoverflow.com/questions/29143280
复制相似问题