Niels Dossche
880faa39e8
Add DOMNode::compareDocumentPosition() ( #12146 )
...
Reference: https://dom.spec.whatwg.org/#dom-node-comparedocumentposition
2023-09-09 01:14:26 +02:00
Niels Dossche
8874384921
Merge branch 'PHP-8.2'
...
* PHP-8.2:
Fix json_encode result on DOMDocument
2023-08-01 17:35:10 +02:00
Niels Dossche
82eda28616
Merge branch 'PHP-8.1' into PHP-8.2
...
* PHP-8.1:
Fix json_encode result on DOMDocument
2023-08-01 17:31:55 +02:00
Niels Dossche
6e468bbd3b
Fix json_encode result on DOMDocument
...
According to https://www.php.net/manual/en/class.domdocument :
When using json_encode() on a DOMDocument object the result will be
that of encoding an empty object.
But this was broken in 8.1. The output was `{"config": null}`.
That's because the config property is defined with a default value of
NULL, hence it was included. The other properties are not included
because they don't have a default property, and nothing is ever written
to their backing field. Hence, the JSON encoder excludes them.
Similarly, `(array) $doc` would yield the same `config` key in the
array.
Closes GH-11840.
2023-08-01 17:28:51 +02:00
Niels Dossche
ae66a0d142
Corrections to return type of loading DOM documents
2023-07-29 14:58:01 +02:00
Niels Dossche
db5e8ae6cf
Implement DOMElement::toggleAttribute()
...
ref: https://dom.spec.whatwg.org/#dom-element-toggleattribute
Closes GH-11696.
2023-07-17 20:06:49 +02:00
Niels Dossche
a73f38f407
Implement DOMElement::insertAdjacent{Element,Text} ( #11700 )
...
* Implement DOMElement::insertAdjacent{Element,Text}
ref: https://dom.spec.whatwg.org/#dom-element-insertadjacentelement
ref: https://dom.spec.whatwg.org/#dom-element-insertadjacenttext
Closes GH-11700.
2023-07-17 17:42:47 +02:00
Niels Dossche
2f318cfb06
Implement DOMNode::isEqualNode()
...
Since we still support obsoleted nodes in our implementation, this uses
the old spec to match the old nodes; and this uses the new spec for
nodes still defined in the living spec.
When unclear, the behaviour was cross-verified with Firefox.
References:
https://dom.spec.whatwg.org/#dom-node-isequalnode (for everything still in the living spec)
https://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/DOM3-Core.html#core-Node3-isEqualNode (for old nodes removed from the living spec)
Closes GH-11690.
2023-07-17 15:29:36 +02:00
Niels Dossche
d04f48b6ac
Implement DOMNode::parentElement and DOMNameSpaceNode::parentElement
...
ref: https://dom.spec.whatwg.org/#parent-element
Closes GH-11679.
2023-07-17 13:15:31 +02:00
Niels Dossche
d38cc9b9b6
Implement DOMNode::isConnected and DOMNameSpaceNode::isConnected
...
ref: https://dom.spec.whatwg.org/#dom-node-isconnected
Closes GH-11677.
2023-07-17 13:14:13 +02:00
Niels Dossche
72e2e25066
Implement DOMElement::id
...
ref: https://dom.spec.whatwg.org/#dom-element-id
Closes GH-11701.
2023-07-14 14:37:11 +02:00
Niels Dossche
6560c9bf8e
Implement DOMParentNode::replaceChildren()
...
ref: https://dom.spec.whatwg.org/#dom-parentnode-replacechildren
2023-07-14 14:34:29 +02:00
Niels Dossche
b24b3510f9
Implement DOMElement::className
...
ref: https://dom.spec.whatwg.org/#dom-element-classname
Closes GH-11691.
2023-07-13 19:05:09 +02:00
Niels Dossche
d17069e191
Implement DOMNode::getRootNode()
...
ref: https://dom.spec.whatwg.org/#dom-node-getrootnode
Closes GH-11693.
2023-07-13 16:27:28 +02:00
Niels Dossche
10d7e8dc3a
Implement DOMElement::getAttributeNames()
...
ref: https://dom.spec.whatwg.org/#dom-element-getattributenames
2023-07-13 16:18:10 +02:00
Niels Dossche
ea794e9cde
Implement DOMNode::contains()
...
ref: https://dom.spec.whatwg.org/#dom-node-contains
2023-07-12 19:29:07 +02:00
Niels Dossche
ed6df1f0ad
Implement DOMDocument::adoptNode()
...
For the past 20 years this threw a "not yet implemented" exception. But
the function was actually there (albeit not documented) and could be called...
Closes GH-11333.
2023-06-27 17:59:58 +02:00
Niels Dossche
f90962dd88
Merge branch 'PHP-8.2'
...
* PHP-8.2:
Fix return value in stub file for DOMNodeList::item
2023-05-29 19:00:57 +02:00
Niels Dossche
dfa89879a5
Merge branch 'PHP-8.1' into PHP-8.2
...
* PHP-8.1:
Fix return value in stub file for DOMNodeList::item
2023-05-29 18:50:54 +02:00
divinity76
761b9a44f8
Fix return value in stub file for DOMNodeList::item
...
Not explicitly documenting the possibility of returning DOMElement causes
the Intelephense linter (a popular PHP linter with ~9 million downloads:
https://marketplace.visualstudio.com/items?itemName=bmewburn.vscode-intelephense-client )
to think this code is bad:
$xp->query("whatever")->item(0)->getAttribute("foo");
DOMNode does not have getAttribute (while DOMElement does).
Documenting the DOMElement return type should fix Intelephense's linter.
Closes GH-11342.
2023-05-29 18:49:26 +02:00
othercorey
e1967ca9ed
Change DOMCharacterData::appendData return type to true ( #10690 )
2023-02-25 21:42:10 +00:00
Máté Kocsis
e328c68305
Rename @cname to @cvalue in stubs ( #9043 )
...
@cname currently refers to the constant name in C. However, it is not always a (constant) name, but sometimes a function invocation, so naming it as @cvalue would be more appropriate.
2022-07-19 15:11:42 +02:00
Máté Kocsis
9c446a9354
Declare ext/dom constants in stubs ( #8676 )
2022-06-01 16:14:08 +02:00
Máté Kocsis
84cd2a9047
Add some stub related todo comments
2022-05-25 13:24:11 +02:00
Máté Kocsis
8168d312f9
Fix a few more classsynopsis generation issues
...
Closes GH-7480
2021-09-22 23:09:43 +02:00
Máté Kocsis
25cbd08470
Make a few unuseful DOMEntity properties readonly ( #7406 )
2021-08-26 10:37:45 +02:00
Máté Kocsis
cdf2f3eb16
DOMCharacterData::$data and DOMAttr::$value are writable
2021-08-25 09:25:22 +02:00
Nikita Popov
ca94d55a19
Mark DOM classes as not serializable
2021-08-10 14:22:26 +02:00
Máté Kocsis
da2cd931e5
Fix another DOMNameSpaceNode casing issue
2021-08-05 09:05:33 +02:00
Nikita Popov
239446c5cf
Merge branch 'PHP-8.0'
...
* PHP-8.0:
dom_import_simplexml() cannot return null
2021-07-21 11:14:03 +02:00
Nikita Popov
a0893865b3
dom_import_simplexml() cannot return null
2021-07-21 11:13:37 +02:00
Nikita Popov
1602db2d3f
Fix return type of DOMNodeList::item()
...
It can also return DOMNameSpaceNode :(
2021-07-21 09:56:35 +02:00
Máté Kocsis
d9838e5453
Declare tentative return types for ext/dom ( #6985 )
2021-07-20 09:26:36 +02:00
Nikita Popov
c2a58ab07d
Throw DomException for DOM out-of-memory error conditions
...
A number of error conditions in DOM can only occur if libxml2 runs
out of memory, at least as far as I can see. In such cases we
currently do a silent "return false", which violates the DOM spec,
and which code is very unlikely to handle sensibly.
Switch these to throw a DomException with INVALID_STATE_ERR type.
This error type is chosen because we use for similar checks
elsewhere, for example:
a733b1ada7/ext/dom/documentfragment.c (L45-L48)
This changes some of the more obvious cases I spotted, but there are probably more.
Closes GH-7049.
2021-07-19 14:43:31 +02:00
Nikita Popov
b9893c2a18
Actually add the tentative type marker...
2021-07-16 16:33:47 +02:00
Nikita Popov
cad6144d18
Add minimial tentative types to dom
...
Just for implementations of Countable. These (no longer) suffer
from an overly broad return type.
2021-07-16 16:32:12 +02:00
Nikita Popov
4cf0269e4e
DOMNamedNodeMap::count() cannot return false
2021-07-16 16:27:53 +02:00
Nikita Popov
f089e8afbd
DOMNodeList::count() cannot return false
...
Refactor the implementation to make this obvious, and make use
of early returns.
2021-07-16 16:22:52 +02:00
Máté Kocsis
7da2151f7a
Declare typed properties in ext/dom
...
Closes GH-7013
2021-05-26 12:23:43 +02:00
Máté Kocsis
a5e938dc86
Declare dynamic properties in ext/dom
...
Closes GH-6644
2021-05-18 15:12:35 +02:00
Máté Kocsis
45fa7596dc
Add missing classes to stubs
2021-02-09 22:38:06 +01:00
Máté Kocsis
99b08ac281
Implicitly enable function entry generation when class entry generation is enabled
...
Closes GH-6675
2021-02-09 13:37:24 +01:00
Nikita Popov
e32d5e8fe7
Merge branch 'PHP-8.0'
...
* PHP-8.0:
Make createDocument() $namespace nullable
2021-02-09 12:29:50 +01:00
Nikita Popov
3549f48edc
Make createDocument() $namespace nullable
...
According to the DOM specification, this argument should be
nullable. It's also supposed to be a required argument, but
not changing that at this point.
2021-02-09 12:28:28 +01:00
Nikita Popov
cfb94b22d5
Merge branch 'PHP-8.0'
...
* PHP-8.0:
Make getElementsByTagNameNS $namespace nullable
2021-02-09 12:20:56 +01:00
Nikita Popov
ab92ffee22
Make getElementsByTagNameNS $namespace nullable
...
According to the DOM specification, this argument is supposed to
be nullable.
2021-02-09 12:19:44 +01:00
Máté Kocsis
5f21062054
Generate class entries for a few extensions
...
Relates to GH-6644
2021-02-03 09:24:09 +01:00
Máté Kocsis
1954e59758
Add support for generating class entries from stubs
...
Closes GH-6289
Co-authored-by: Nikita Popov <nikita.ppv@gmail.com>
2021-01-26 11:50:36 +01:00
Máté Kocsis
9cec093b7f
Add support for generating methodsynopses from stubs
...
Closes GH-6367
2020-12-28 14:44:43 +01:00
Nikita Popov
27e250880b
Fix bug #80537
...
This is an unavoidable breaking change to both the type and
parameter name.
The assertion that was supposed to prevent this was overly lax
and accepted any object type for string parameters.
2020-12-21 10:21:50 +01:00