我试图扩展SimpleXMLElement类,以提供将子XML字符串或其他 SimpleXMLElement 合并到我的 SimpleXMLElement 中的机制,代码为这基于问题code written by Carlos C Soto in an answer的"PHP - SimpleXML - AddChild with another SimpleXMLElement"。
现在我只在子类中添加一个addXml
函数(应该通过返回新创建的元素来模拟内置的addChild
)但我想每个函数调用都会返回一个 SimpleXMLElement 而不是我新创建的子类。有没有办法在PHP中与Java相媲美?
编辑,因为有人认为没有任何理由而无法投票:我没有Java开发人员,通常我也不会介意这类问题,但 SimpleXMLElement 是一个PHP类,因此我无法在不编写大量代码的情况下轻松地将其包装起来。也许某种反射魔法使这成为可能?
答案 0 :(得分: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将从实例中获取类名。