New ext-dom features
| From: | Niels Dossche | Date: | Sat, 17 Feb 2024 23:11:42 +0000 |
| Subject: | New ext-dom features | ||
| Groups: | php.internals | ||
| Request: | Send a blank email to internals+get-122418@lists.php.net to get a copy of this message | ||
Hi internals
After (and if) my current in-voting RFC about spec-compliance DOM passes, some features become more
easily possible to implement due to the necessary building blocks becoming in place in the extension
code.
I would like to start implementing those. Therefore, I'd like to gauge the opinion of the
community on the following two features before making an actual RFC and sitting through the process
again.
1) Helper functions for CSS classes (i.e. classList). Requested here: https://github.com/php/php-src/issues/11688
This feature would add the DOMTokenList class along with the classList property to the Element
class.
It exists to ease the managing of CSS classes on elements, i.e. it deals with whitespace, duplicate
class names, etc all for you using a simple set-like API.
I expect that implementing this into the DOM extension is not too difficult, as the spec steps are
really straight-forward [1] and we just have to reuse the internal APIs to manage attributes.
2) Built-in CSS selector API support
In particular, Element::querySelector(All), Element::matches, and Element::closest support.
For "old DOM" there is a trick to at least implement querySelector(All) in userland, and
that is to translate the selector to XPath and use XPath queries internally. However, that's
slower and more cumbersome than a native implementation. It's also just silly to not have this
natively available since it's so commonly used.
I have a prototype implementation of this already actually, because I got bored while fixing
spec-compliance issues and wanted some funner stuff to do. It's based on Lexbor's CSS
support.
Kind regards
Niels
[1] https://dom.spec.whatwg.org/#interface-domtokenlist