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 git.master, git.master_jit, rfc.property-hooks
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) }

This tab shows result from various feature-branches currently under review by the php developers. Contact me to have additional branches featured.

Active branches

Archived branches

Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page


preferences:
46.61 ms | 403 KiB | 8 Q