#
24e5e4ec |
| 08-Oct-2023 |
Niels Dossche <7771979+nielsdos@users.noreply.github.com> |
Fix GH-8996: DOMNode serialization on PHP ^8.1 PHP 8.1 introduced a seemingly unintentional BC break in ca94d55a19 by blocking the (un)serialization of DOM objects. This was done bec
Fix GH-8996: DOMNode serialization on PHP ^8.1 PHP 8.1 introduced a seemingly unintentional BC break in ca94d55a19 by blocking the (un)serialization of DOM objects. This was done because the serialization never really worked and just resulted in an empty object, which upon unserialization just resulted in an object that you can't use. Users can however implement their own serialization methods, but the commit made that impossible as the ACC flag gets passed down to the child class. An approach was tried in #10307 with a new ACC flag to selectively allow serialization with subclasses if they implement the right methods. However, that was found to be too ad hoc. Instead, let's abuse how the __sleep and __wakeup methods work to throw the exception instead. If the child class implements the __serialize / __unserialize method, then the throwing methods won't be called. Similarly, if the child class implements __sleep and __wakeup, then they're overridden and it doesn't matter that they throw. For the user, this PR has the exact same behaviour for (sub)classes that don't implement the serialization methods: an exception will be thrown. For code that previously implemented subclasses with these methods, this approach will make that code work again. This approach should be both BC preserving and unbreak user's code. Closes GH-12388. For the test: Co-authored-by: wazelin <contact@sergeimikhailov.com>
show more ...
|
#
6e468bbd |
| 31-Jul-2023 |
Niels Dossche <7771979+nielsdos@users.noreply.github.com> |
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 en
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.
show more ...
|
#
761b9a44 |
| 29-May-2023 |
divinity76 |
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 millio
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.
show more ...
|
Revision tags: php-8.1.7RC1, php-8.1.4RC1, php-8.1.3, php-8.1.2RC1, php-8.1.0, php-7.3.33, php-7.3.32, php-7.3.31 |
|
#
8168d312 |
| 08-Sep-2021 |
Máté Kocsis |
Fix a few more classsynopsis generation issues Closes GH-7480 |
#
25cbd084 |
| 26-Aug-2021 |
Máté Kocsis |
Make a few unuseful DOMEntity properties readonly (#7406) |
#
cdf2f3eb |
| 25-Aug-2021 |
Máté Kocsis |
DOMCharacterData::$data and DOMAttr::$value are writable |
Revision tags: php-7.3.30 |
|
#
ca94d55a |
| 10-Aug-2021 |
Nikita Popov |
Mark DOM classes as not serializable |
#
da2cd931 |
| 05-Aug-2021 |
Máté Kocsis |
Fix another DOMNameSpaceNode casing issue |
#
239446c5 |
| 21-Jul-2021 |
Nikita Popov |
Merge branch 'PHP-8.0' * PHP-8.0: dom_import_simplexml() cannot return null
|
#
a0893865 |
| 21-Jul-2021 |
Nikita Popov |
dom_import_simplexml() cannot return null |
#
1602db2d |
| 21-Jul-2021 |
Nikita Popov |
Fix return type of DOMNodeList::item() It can also return DOMNameSpaceNode :( |
#
d9838e54 |
| 20-Jul-2021 |
Máté Kocsis |
Declare tentative return types for ext/dom (#6985) |
Revision tags: php-7.3.29 |
|
#
c2a58ab0 |
| 26-May-2021 |
Nikita Popov |
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
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: https://github.com/php/php-src/blob/a733b1ada7895f6fa5e349755a878cae9189e3f5/ext/dom/documentfragment.c#L45-L48 This changes some of the more obvious cases I spotted, but there are probably more. Closes GH-7049.
show more ...
|
#
b9893c2a |
| 16-Jul-2021 |
Nikita Popov |
Actually add the tentative type marker... |
#
cad6144d |
| 16-Jul-2021 |
Nikita Popov |
Add minimial tentative types to dom Just for implementations of Countable. These (no longer) suffer from an overly broad return type. |
#
4cf0269e |
| 16-Jul-2021 |
Nikita Popov |
DOMNamedNodeMap::count() cannot return false |
#
f089e8af |
| 16-Jul-2021 |
Nikita Popov |
DOMNodeList::count() cannot return false Refactor the implementation to make this obvious, and make use of early returns. |
#
7da2151f |
| 19-May-2021 |
Máté Kocsis |
Declare typed properties in ext/dom Closes GH-7013 |
Revision tags: php-7.3.28, php-7.3.27 |
|
#
a5e938dc |
| 26-Jan-2021 |
Máté Kocsis |
Declare dynamic properties in ext/dom Closes GH-6644 |
#
45fa7596 |
| 09-Feb-2021 |
Máté Kocsis |
Add missing classes to stubs |
#
99b08ac2 |
| 08-Feb-2021 |
Máté Kocsis |
Implicitly enable function entry generation when class entry generation is enabled Closes GH-6675 |
#
e32d5e8f |
| 09-Feb-2021 |
Nikita Popov |
Merge branch 'PHP-8.0' * PHP-8.0: Make createDocument() $namespace nullable
|
#
3549f48e |
| 09-Feb-2021 |
Nikita Popov |
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
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.
show more ...
|
#
cfb94b22 |
| 09-Feb-2021 |
Nikita Popov |
Merge branch 'PHP-8.0' * PHP-8.0: Make getElementsByTagNameNS $namespace nullable
|
#
ab92ffee |
| 09-Feb-2021 |
Nikita Popov |
Make getElementsByTagNameNS $namespace nullable According to the DOM specification, this argument is supposed to be nullable. |