From cfe1f231d76c416159345315a72e5845f2a6f178 Mon Sep 17 00:00:00 2001 From: Sergey Panteleev Date: Mon, 6 Nov 2023 20:12:11 +0300 Subject: [PATCH 1/6] [PHP 8.3] New DOM methods --- .../dom/domelement/getattributenames.xml | 80 ++++++++++++ .../dom/domelement/insertadjacentelement.xml | 112 +++++++++++++++++ .../dom/domelement/insertadjacenttext.xml | 115 ++++++++++++++++++ reference/dom/domelement/toggleattribute.xml | 104 ++++++++++++++++ reference/dom/domnode/contains.xml | 91 ++++++++++++++ reference/dom/domnode/getrootnode.xml | 79 ++++++++++++ reference/dom/domnode/isequalnode.xml | 79 ++++++++++++ .../dom/domparentnode/replacechildren.xml | 88 ++++++++++++++ reference/dom/versions.xml | 9 +- 9 files changed, 756 insertions(+), 1 deletion(-) create mode 100644 reference/dom/domelement/getattributenames.xml create mode 100644 reference/dom/domelement/insertadjacentelement.xml create mode 100644 reference/dom/domelement/insertadjacenttext.xml create mode 100644 reference/dom/domelement/toggleattribute.xml create mode 100644 reference/dom/domnode/contains.xml create mode 100644 reference/dom/domnode/getrootnode.xml create mode 100644 reference/dom/domnode/isequalnode.xml create mode 100644 reference/dom/domparentnode/replacechildren.xml diff --git a/reference/dom/domelement/getattributenames.xml b/reference/dom/domelement/getattributenames.xml new file mode 100644 index 000000000000..346bd56bc432 --- /dev/null +++ b/reference/dom/domelement/getattributenames.xml @@ -0,0 +1,80 @@ + + + + DOMElement::getAttributeNames + Get attribute names + + + + &reftitle.description; + + public arrayDOMElement::getAttributeNames + + + + Get attribute names. + + + + + &reftitle.parameters; + &no.function.parameters; + + + + &reftitle.returnvalues; + + Return attribute names. + + + + + &reftitle.examples; + + <methodname>DOMElement::getAttributeNames</methodname> example + +loadXML(''); +var_dump($dom->documentElement->getAttributeNames()); +?> +]]> + + + &example.outputs; + + + string(10) "xmlns:some" + [1]=> + string(9) "some:test" + [2]=> + string(5) "test2" +} +]]> + + + + diff --git a/reference/dom/domelement/insertadjacentelement.xml b/reference/dom/domelement/insertadjacentelement.xml new file mode 100644 index 000000000000..dce9fcc38611 --- /dev/null +++ b/reference/dom/domelement/insertadjacentelement.xml @@ -0,0 +1,112 @@ + + + + DOMElement::insertAdjacentElement + Insert adjacent element + + + + &reftitle.description; + + public DOMElementnullDOMElement::insertAdjacentElement + stringlocalName + DOMElementelement + + + Inserts adjacent element. + + + + + &reftitle.parameters; + + + + localName + + + + beforebegin + afterbegin + beforeend + afterend + + + + + + element + + + The element to insert. + + + + + + + + + &reftitle.returnvalues; + + Return DOMElement or &null; on failure. + + + + + &reftitle.examples; + + <methodname>DOMElement::insertAdjacentElement</methodname> example + +loadXML('

foo

'); +$container = $dom->documentElement; +$p = $container->firstElementChild; + +$p->insertAdjacentElement('beforebegin', $dom->createElement('A')); +echo $dom->saveXML(); +?> +]]> +
+
+ &example.outputs; + + +

foo

+]]> +
+
+ + + &reftitle.seealso; + + + DOMElement::insertAdjacentText + + + +
+ diff --git a/reference/dom/domelement/insertadjacenttext.xml b/reference/dom/domelement/insertadjacenttext.xml new file mode 100644 index 000000000000..140f0c9931a6 --- /dev/null +++ b/reference/dom/domelement/insertadjacenttext.xml @@ -0,0 +1,115 @@ + + + + DOMElement::insertAdjacentText + Insert adjacent text + + + + &reftitle.description; + + public voidDOMElement::insertAdjacentText + stringlocalName + stringdata + + + Inserts adjacent text. + + + + + &reftitle.parameters; + + + + localName + + + + beforebegin + afterbegin + beforeend + afterend + + + + + + data + + + The string to insert. + + + + + + + + + &reftitle.returnvalues; + + &return.void; + + + + + &reftitle.examples; + + <methodname>DOMElement::insertAdjacentText</methodname> example + +loadXML('

H

'); + +$container = $dom->documentElement; +$p = $container->firstElementChild; + +$p->insertAdjacentText("afterbegin", "P"); +$p->insertAdjacentText("beforeend", "P"); + +echo $dom->saveXML(); +?> +]]> +
+
+ &example.outputs; + + +

PHP

+]]> +
+
+ + + &reftitle.seealso; + + + DOMElement::insertAdjacentElement + + + +
+ diff --git a/reference/dom/domelement/toggleattribute.xml b/reference/dom/domelement/toggleattribute.xml new file mode 100644 index 000000000000..54acfd8d236c --- /dev/null +++ b/reference/dom/domelement/toggleattribute.xml @@ -0,0 +1,104 @@ + + + + DOMElement::toggleAttribute + Toggle attribute + + + + &reftitle.description; + + public boolDOMElement::toggleAttribute + stringqualifiedName + boolforce&null; + + + Toggle the attribute. + + + + + &reftitle.parameters; + + + + qualifiedName + + + The attribute as a string. + + + + + force + + + + + + + + + + + + &reftitle.returnvalues; + + Returns &true; if the attribute is represented, &false; otherwise. + + + + + &reftitle.examples; + + <methodname>DOMElement::toggleAttribute</methodname> example + +loadXML(""); + +var_dump($dom->documentElement->toggleAttribute('xmlns:anotherone')); +echo $dom->saveXML() . PHP_EOL; + +var_dump($dom->documentElement->toggleAttribute('xmlns:anotherone')); +echo $dom->saveXML(); +?> +]]> + + + &example.outputs; + + + + +bool(true) + + +]]> + + + + diff --git a/reference/dom/domnode/contains.xml b/reference/dom/domnode/contains.xml new file mode 100644 index 000000000000..f2d1868e4276 --- /dev/null +++ b/reference/dom/domnode/contains.xml @@ -0,0 +1,91 @@ + + + + DOMNode::contains + Checks if node contains other node + + + + &reftitle.description; + + public boolDOMNode::contains + DOMNodeDOMNameSpaceNodenullother + + + Checks if node contains other node. + + + + + &reftitle.parameters; + + + + other + + + Node to be checked. + + + + + + + + + &reftitle.returnvalues; + + Returns &true; if node contains other node, &false; otherwise. + + + + + &reftitle.examples; + + <methodname>DOMNode::contains</methodname> example + +loadXML(<< + + +
+

Hello, world!

+
+ + +XML); + +$xpath = new DOMXPath($dom); +$main = $xpath->query("//main")[0]; + +var_dump($dom->documentElement->contains($main)); +?> +]]> +
+
+
+
+ diff --git a/reference/dom/domnode/getrootnode.xml b/reference/dom/domnode/getrootnode.xml new file mode 100644 index 000000000000..83f69406eab6 --- /dev/null +++ b/reference/dom/domnode/getrootnode.xml @@ -0,0 +1,79 @@ + + + + DOMNode::getRootNode + Get root node + + + + &reftitle.description; + + public DOMNodeDOMNode::getRootNode + arrayoptions&null; + + + Get root node. + + + + + &reftitle.parameters; + + + + options + + + + + + + + + + + + &reftitle.returnvalues; + + Returns root node. + + + + + &reftitle.examples; + + <methodname>DOMNode::getRootNode</methodname> example + +loadXML(''); + +var_dump($dom->documentElement->firstElementChild->getRootNode() === $dom); +?> +]]> + + + + + diff --git a/reference/dom/domnode/isequalnode.xml b/reference/dom/domnode/isequalnode.xml new file mode 100644 index 000000000000..6e320c65845f --- /dev/null +++ b/reference/dom/domnode/isequalnode.xml @@ -0,0 +1,79 @@ + + + + DOMNode::isEqualNode + Checks that both nodes are equal + + + + &reftitle.description; + + public boolDOMNode::isEqualNode + DOMNodenullotherNode + + + Checks that both nodes are equal. + + + + + &reftitle.parameters; + + + + otherNode + + + The node. + + + + + + + + + &reftitle.returnvalues; + + Returns &true; if both nodes are equal, &false; otherwise. + + + + + &reftitle.examples; + + <methodname>DOMNode::isEqualNode</methodname> example + +createElement('h1', 'Hello World!'); +$dom2 = (new DOMDocument())->createElement('h1', 'Hello World!'); + +var_dump($dom1->isEqualNode($dom2)); +?> +]]> + + + + + diff --git a/reference/dom/domparentnode/replacechildren.xml b/reference/dom/domparentnode/replacechildren.xml new file mode 100644 index 000000000000..b5c75f46dae0 --- /dev/null +++ b/reference/dom/domparentnode/replacechildren.xml @@ -0,0 +1,88 @@ + + + + DOMParentNode::replaceChildren + Replace children in node + + + + &reftitle.description; + + public voidDOMParentNode::replaceChildren + DOMNodestringnodes + + + Replace children in node. + + + + + &reftitle.parameters; + + + + nodes + + + The nodes to replace. + + + + + + + + + &reftitle.returnvalues; + + &return.void; + + + + + &reftitle.examples; + + <methodname>DOMParentNode::replaceChildren</methodname> example + +loadHTML('

hi

test

hi2

'); + +$dom->documentElement->replaceChildren('foo', $dom->createElement('p'), 'bar'); +echo $dom->saveXML(); +?> +]]> +
+
+ &example.outputs; + + + +foo

bar +]]> + + + + diff --git a/reference/dom/versions.xml b/reference/dom/versions.xml index 31270ff48adf..e75393343dcd 100644 --- a/reference/dom/versions.xml +++ b/reference/dom/versions.xml @@ -71,6 +71,7 @@ + @@ -78,6 +79,8 @@ + + @@ -88,6 +91,7 @@ + @@ -122,15 +126,17 @@ + + - + @@ -149,6 +155,7 @@ + From 559f470fc99fc8e7bac9167fef6901822f11f44e Mon Sep 17 00:00:00 2001 From: Sergey Panteleev Date: Mon, 6 Nov 2023 23:25:27 +0300 Subject: [PATCH 2/6] Apply suggestions from code review Co-authored-by: Niels Dossche <7771979+nielsdos@users.noreply.github.com> --- reference/dom/domelement/insertadjacentelement.xml | 6 +++--- reference/dom/domelement/insertadjacenttext.xml | 6 +++--- reference/dom/domelement/toggleattribute.xml | 4 ++-- reference/dom/domnode/contains.xml | 4 ++-- reference/dom/domparentnode/replacechildren.xml | 2 +- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/reference/dom/domelement/insertadjacentelement.xml b/reference/dom/domelement/insertadjacentelement.xml index dce9fcc38611..53d9081d5775 100644 --- a/reference/dom/domelement/insertadjacentelement.xml +++ b/reference/dom/domelement/insertadjacentelement.xml @@ -9,11 +9,11 @@ &reftitle.description; public DOMElementnullDOMElement::insertAdjacentElement - stringlocalName + stringwhere DOMElementelement - Inserts adjacent element. + Inserts an element at a relative position given by where. @@ -22,7 +22,7 @@ - localName + where diff --git a/reference/dom/domelement/insertadjacenttext.xml b/reference/dom/domelement/insertadjacenttext.xml index 140f0c9931a6..cf41926c68d0 100644 --- a/reference/dom/domelement/insertadjacenttext.xml +++ b/reference/dom/domelement/insertadjacenttext.xml @@ -9,11 +9,11 @@ &reftitle.description; public voidDOMElement::insertAdjacentText - stringlocalName + stringwhere stringdata - Inserts adjacent text. + Inserts text at a relative position given by where. @@ -22,7 +22,7 @@ - localName + where diff --git a/reference/dom/domelement/toggleattribute.xml b/reference/dom/domelement/toggleattribute.xml index 54acfd8d236c..7186c9678ba9 100644 --- a/reference/dom/domelement/toggleattribute.xml +++ b/reference/dom/domelement/toggleattribute.xml @@ -25,7 +25,7 @@ qualifiedName - The attribute as a string. + The qualified name of the attribute. @@ -44,7 +44,7 @@ &reftitle.returnvalues; - Returns &true; if the attribute is represented, &false; otherwise. + Returns &true; if the attribute is present after finishing the call, &false; otherwise. diff --git a/reference/dom/domnode/contains.xml b/reference/dom/domnode/contains.xml index f2d1868e4276..809347745901 100644 --- a/reference/dom/domnode/contains.xml +++ b/reference/dom/domnode/contains.xml @@ -12,7 +12,7 @@ DOMNodeDOMNameSpaceNodenullother - Checks if node contains other node. + Checks if node contains other node. @@ -35,7 +35,7 @@ &reftitle.returnvalues; - Returns &true; if node contains other node, &false; otherwise. + Returns &true; if node contains other node, &false; otherwise. diff --git a/reference/dom/domparentnode/replacechildren.xml b/reference/dom/domparentnode/replacechildren.xml index b5c75f46dae0..2201a7389518 100644 --- a/reference/dom/domparentnode/replacechildren.xml +++ b/reference/dom/domparentnode/replacechildren.xml @@ -24,7 +24,7 @@ nodes - The nodes to replace. + The nodes replacing the children. From f27e338044efc858366b2cd09228577e7d9e5064 Mon Sep 17 00:00:00 2001 From: Sergey Panteleev Date: Mon, 6 Nov 2023 23:30:46 +0300 Subject: [PATCH 3/6] Apply suggestions from code review Co-authored-by: Niels Dossche <7771979+nielsdos@users.noreply.github.com> --- reference/dom/domelement/insertadjacentelement.xml | 8 ++++---- reference/dom/domelement/insertadjacenttext.xml | 8 ++++---- reference/dom/domelement/toggleattribute.xml | 6 +++++- reference/dom/domnode/getrootnode.xml | 2 +- 4 files changed, 14 insertions(+), 10 deletions(-) diff --git a/reference/dom/domelement/insertadjacentelement.xml b/reference/dom/domelement/insertadjacentelement.xml index 53d9081d5775..fcf41518f8df 100644 --- a/reference/dom/domelement/insertadjacentelement.xml +++ b/reference/dom/domelement/insertadjacentelement.xml @@ -26,10 +26,10 @@ - beforebegin - afterbegin - beforeend - afterend + beforebegin - Insert before the target element. + afterbegin - Insert as the first child of the target element. + beforeend - Insert as the last child of the target element. + afterend - Insert after the target element. diff --git a/reference/dom/domelement/insertadjacenttext.xml b/reference/dom/domelement/insertadjacenttext.xml index cf41926c68d0..aa5e4ffa11dd 100644 --- a/reference/dom/domelement/insertadjacenttext.xml +++ b/reference/dom/domelement/insertadjacenttext.xml @@ -26,10 +26,10 @@ - beforebegin - afterbegin - beforeend - afterend + beforebegin - Insert before the target element. + afterbegin - Insert as the first child of the target element. + beforeend - Insert as the last child of the target element. + afterend - Insert after the target element. diff --git a/reference/dom/domelement/toggleattribute.xml b/reference/dom/domelement/toggleattribute.xml index 7186c9678ba9..23a7aa4a9080 100644 --- a/reference/dom/domelement/toggleattribute.xml +++ b/reference/dom/domelement/toggleattribute.xml @@ -33,7 +33,11 @@ force - + + if &null;, the function will toggle the attribute. + if &true;, the function adds the attribute. + if &false;, the function removes the attribute. + diff --git a/reference/dom/domnode/getrootnode.xml b/reference/dom/domnode/getrootnode.xml index 83f69406eab6..74bad637f9b4 100644 --- a/reference/dom/domnode/getrootnode.xml +++ b/reference/dom/domnode/getrootnode.xml @@ -24,7 +24,7 @@ options - + This parameter has no effect yet. From 56196bf886f8c66e9c7ceeca3b501a54d802e81b Mon Sep 17 00:00:00 2001 From: Sergey Panteleev Date: Tue, 7 Nov 2023 09:49:33 +0300 Subject: [PATCH 4/6] Apply suggestions from code review Co-authored-by: Gina Peter Banyard --- reference/dom/domnode/contains.xml | 5 +++++ reference/dom/domnode/getrootnode.xml | 8 +++++++- reference/dom/domnode/isequalnode.xml | 5 +++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/reference/dom/domnode/contains.xml b/reference/dom/domnode/contains.xml index 809347745901..be383500ac36 100644 --- a/reference/dom/domnode/contains.xml +++ b/reference/dom/domnode/contains.xml @@ -66,6 +66,11 @@ var_dump($dom->documentElement->contains($main)); ?> ]]> + + + diff --git a/reference/dom/domnode/getrootnode.xml b/reference/dom/domnode/getrootnode.xml index 74bad637f9b4..001a2945547f 100644 --- a/reference/dom/domnode/getrootnode.xml +++ b/reference/dom/domnode/getrootnode.xml @@ -54,7 +54,13 @@ var_dump($dom->documentElement->firstElementChild->getRootNode() === $dom); ?> ]]> - + &example.outputs; + + + +