【问题标题】:Cast Object to Subclass in PHP在 PHP 中将对象转换为子类
【发布时间】:2015-03-19 11:23:04
【问题描述】:

我正在尝试扩展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 类,所以我不能在不编写大量代码的情况下轻松包装它。也许某种反射魔法使这成为可能?

【问题讨论】:

    标签: php oop reflection simplexml downcast


    【解决方案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 将从实例中获取类名。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-03
      • 1970-01-01
      • 1970-01-01
      • 2021-01-23
      相关资源
      最近更新 更多