Re: New ext-dom features

From: Date: Sun, 18 Feb 2024 17:25:58 +0000
Subject: Re: New ext-dom features
References: 1  Groups: php.internals 
Request: Send a blank email to internals+get-122431@lists.php.net to get a copy of this message
On Sat, Feb 17, 2024, at 5:11 PM, Niels Dossche wrote: > 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 I feel like the CSS-based querySelector() was discussed not that long ago. Was it by you? Lexbor sounds familiar. Either way, I'm +1 on including a CSS selector natively. --Larry Garfield

« previous php.internals (#122431) next »