3v4l.org

run code in 300+ PHP versions simultaneously
<?php class MyNode extends DOMNode { public function describe() { echo "I am a " . $this->tagName . " node!"; } } class MyElement extends DOMElement {} class MyDocument extends DOMDocument {} class MyNodeList extends DOMNodeList {} // this class is unused. $dom = new MyDocument(); $dom->registerNodeClass("DOMNode", "MyNode"); $dom->registerNodeClass("DOMElement", "MyElement"); // Can't do this, because DOMNodeList doesn't inherit from DOMNode. // $dom->registerNodeClass("DOMNodeList", "MyNodeList"); $dom->loadHTML("<!doctype html><h1>Hello, World!</h1>"); // The items within the DOMNodeList are MyElement objects... var_dump($dom->documentElement->childNodes->item(0)); // ...but why can't I use a MyNodeList here? var_dump($dom->documentElement->childNodes);
Output for 8.3.0 - 8.3.4, 8.3.6
object(MyElement)#4 (27) { ["schemaTypeInfo"]=> NULL ["tagName"]=> string(4) "body" ["className"]=> string(0) "" ["id"]=> string(0) "" ["firstElementChild"]=> string(22) "(object value omitted)" ["lastElementChild"]=> string(22) "(object value omitted)" ["childElementCount"]=> int(1) ["previousElementSibling"]=> NULL ["nextElementSibling"]=> NULL ["nodeName"]=> string(4) "body" ["nodeValue"]=> string(13) "Hello, World!" ["nodeType"]=> int(1) ["parentNode"]=> string(22) "(object value omitted)" ["parentElement"]=> string(22) "(object value omitted)" ["childNodes"]=> string(22) "(object value omitted)" ["firstChild"]=> string(22) "(object value omitted)" ["lastChild"]=> string(22) "(object value omitted)" ["previousSibling"]=> NULL ["nextSibling"]=> NULL ["attributes"]=> string(22) "(object value omitted)" ["isConnected"]=> bool(true) ["ownerDocument"]=> string(22) "(object value omitted)" ["namespaceURI"]=> NULL ["prefix"]=> string(0) "" ["localName"]=> string(4) "body" ["baseURI"]=> NULL ["textContent"]=> string(13) "Hello, World!" } object(DOMNodeList)#3 (1) { ["length"]=> int(1) }
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 object(MyElement)#4 (27) { ["schemaTypeInfo"]=> NULL ["tagName"]=> string(4) "body" ["className"]=> string(0) "" ["id"]=> string(0) "" ["firstElementChild"]=> string(22) "(object value omitted)" ["lastElementChild"]=> string(22) "(object value omitted)" ["childElementCount"]=> int(1) ["previousElementSibling"]=> NULL ["nextElementSibling"]=> NULL ["nodeName"]=> string(4) "body" ["nodeValue"]=> string(13) "Hello, World!" ["nodeType"]=> int(1) ["parentNode"]=> string(22) "(object value omitted)" ["parentElement"]=> string(22) "(object value omitted)" ["childNodes"]=> string(22) "(object value omitted)" ["firstChild"]=> string(22) "(object value omitted)" ["lastChild"]=> string(22) "(object value omitted)" ["previousSibling"]=> NULL ["nextSibling"]=> NULL ["attributes"]=> string(22) "(object value omitted)" ["isConnected"]=> bool(true) ["ownerDocument"]=> string(22) "(object value omitted)" ["namespaceURI"]=> NULL ["prefix"]=> string(0) "" ["localName"]=> string(4) "body" ["baseURI"]=> NULL ["textContent"]=> string(13) "Hello, World!" } object(DOMNodeList)#3 (1) { ["length"]=> int(1) }
Output for 8.1.0 - 8.1.28, 8.2.0 - 8.2.18
object(MyElement)#4 (23) { ["schemaTypeInfo"]=> NULL ["tagName"]=> string(4) "body" ["firstElementChild"]=> string(22) "(object value omitted)" ["lastElementChild"]=> string(22) "(object value omitted)" ["childElementCount"]=> int(1) ["previousElementSibling"]=> NULL ["nextElementSibling"]=> NULL ["nodeName"]=> string(4) "body" ["nodeValue"]=> string(13) "Hello, World!" ["nodeType"]=> int(1) ["parentNode"]=> string(22) "(object value omitted)" ["childNodes"]=> string(22) "(object value omitted)" ["firstChild"]=> string(22) "(object value omitted)" ["lastChild"]=> string(22) "(object value omitted)" ["previousSibling"]=> NULL ["nextSibling"]=> NULL ["attributes"]=> string(22) "(object value omitted)" ["ownerDocument"]=> string(22) "(object value omitted)" ["namespaceURI"]=> NULL ["prefix"]=> string(0) "" ["localName"]=> string(4) "body" ["baseURI"]=> NULL ["textContent"]=> string(13) "Hello, World!" } object(DOMNodeList)#3 (1) { ["length"]=> int(1) }
Output for 8.0.0 - 8.0.30
object(MyElement)#4 (23) { ["tagName"]=> string(4) "body" ["schemaTypeInfo"]=> NULL ["firstElementChild"]=> string(22) "(object value omitted)" ["lastElementChild"]=> string(22) "(object value omitted)" ["childElementCount"]=> int(1) ["previousElementSibling"]=> NULL ["nextElementSibling"]=> NULL ["nodeName"]=> string(4) "body" ["nodeValue"]=> string(13) "Hello, World!" ["nodeType"]=> int(1) ["parentNode"]=> string(22) "(object value omitted)" ["childNodes"]=> string(22) "(object value omitted)" ["firstChild"]=> string(22) "(object value omitted)" ["lastChild"]=> string(22) "(object value omitted)" ["previousSibling"]=> NULL ["nextSibling"]=> NULL ["attributes"]=> string(22) "(object value omitted)" ["ownerDocument"]=> string(22) "(object value omitted)" ["namespaceURI"]=> NULL ["prefix"]=> string(0) "" ["localName"]=> string(4) "body" ["baseURI"]=> NULL ["textContent"]=> string(13) "Hello, World!" } object(DOMNodeList)#3 (1) { ["length"]=> int(1) }
Output for 7.0.16 - 7.0.33, 7.1.2 - 7.1.33, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33
object(MyElement)#4 (18) { ["tagName"]=> string(4) "body" ["schemaTypeInfo"]=> NULL ["nodeName"]=> string(4) "body" ["nodeValue"]=> string(13) "Hello, World!" ["nodeType"]=> int(1) ["parentNode"]=> string(22) "(object value omitted)" ["childNodes"]=> string(22) "(object value omitted)" ["firstChild"]=> string(22) "(object value omitted)" ["lastChild"]=> string(22) "(object value omitted)" ["previousSibling"]=> NULL ["nextSibling"]=> NULL ["attributes"]=> string(22) "(object value omitted)" ["ownerDocument"]=> string(22) "(object value omitted)" ["namespaceURI"]=> NULL ["prefix"]=> string(0) "" ["localName"]=> string(4) "body" ["baseURI"]=> NULL ["textContent"]=> string(13) "Hello, World!" } object(DOMNodeList)#3 (1) { ["length"]=> int(1) }
Output for 5.5.0 - 5.5.38, 5.6.0 - 5.6.40, 7.0.0 - 7.0.15, 7.1.0 - 7.1.1
object(MyElement)#4 (17) { ["tagName"]=> string(4) "body" ["schemaTypeInfo"]=> NULL ["nodeName"]=> string(4) "body" ["nodeValue"]=> string(13) "Hello, World!" ["nodeType"]=> int(1) ["parentNode"]=> string(22) "(object value omitted)" ["childNodes"]=> string(22) "(object value omitted)" ["firstChild"]=> string(22) "(object value omitted)" ["lastChild"]=> string(22) "(object value omitted)" ["previousSibling"]=> NULL ["attributes"]=> string(22) "(object value omitted)" ["ownerDocument"]=> string(22) "(object value omitted)" ["namespaceURI"]=> NULL ["prefix"]=> string(0) "" ["localName"]=> string(4) "body" ["baseURI"]=> NULL ["textContent"]=> string(13) "Hello, World!" } object(DOMNodeList)#3 (1) { ["length"]=> int(1) }

preferences:
240.05 ms | 404 KiB | 330 Q