[RFC] [Discussion] Improve callbacks in ext/dom and ext/xsl

php.internals

Niels Dossche

2 years ago
Hi internals I'm opening the discussion for my RFC "Improve callbacks in ext/dom and ext/xsl". RFC link: https://wiki.php.net/rfc/improve_callbacks_dom_and_xsl Kind regards Niels

Tim Düsterhus

2 years ago
Hi On 11/7/23 20:32, Niels Dossche wrote:
> I'm opening the discussion for my RFC "Improve callbacks in ext/dom and ext/xsl". > RFC link: https://wiki.php.net/rfc/improve_callbacks_dom_and_xsl
Some question that I believe are not answered: 1. $xpath->registerPhpFunctions([ "foo" => ... ]); $xpath->registerPhpFunctions([ "foo" => ... ]); Is this an error due to the duplicate definition or will the last 'foo' win? 2. $xpath->registerPhpFunctions([]); Is this an error or a noop? 3. Would it make sense to deprecate passing a string as "Future Scope"? Simplifying the method signature would also allow to simplify the documentation in the long run and registering a string is trivially fixed by adding square brackets. In fact looking at the existing documentation at https://www.php.net/manual/en/domxpath.registerphpfunctions.php, what's the difference between 'php:function()' and 'php:functionString()'? Best regards Tim Düsterhus

Niels Dossche

2 years ago
Hi Tim On 11/11/23 16:32, Tim Düsterhus wrote:
> Hi > > On 11/7/23 20:32, Niels Dossche wrote: >> I'm opening the discussion for my RFC "Improve callbacks in ext/dom and ext/xsl". >> RFC link: https://wiki.php.net/rfc/improve_callbacks_dom_and_xsl > > Some question that I believe are not answered: > > 1. > > $xpath->registerPhpFunctions([ >   "foo" => ... > ]); > > $xpath->registerPhpFunctions([ >   "foo" => ... > ]); > > Is this an error due to the duplicate definition or will the last 'foo' win?
The last 'foo' will win, such that you can override previous definitions.
> > 2. > > $xpath->registerPhpFunctions([]); > > Is this an error or a noop? >
This is a no-op, just like it is the case in current PHP versions.
> 3. > > Would it make sense to deprecate passing a string as "Future Scope"? Simplifying the method signature would also allow to simplify the documentation in the long run and registering a string is trivially fixed by adding square brackets.
Maybe, although I personally don't hate it that much.
> > In fact looking at the existing documentation at https://www.php.net/manual/en/domxpath.registerphpfunctions.php, what's the difference between 'php:function()' and 'php:functionString()'?
The difference is in the returned result. php:functionString() will case the result to a string automatically for you, while php:function() just returns the result as-is.
> > Best regards > Tim Düsterhus
Kind regards Niels

Niels Dossche

2 years ago
Hi internals On 07/11/2023 20:32, Niels Dossche wrote:
> Hi internals > > I'm opening the discussion for my RFC "Improve callbacks in ext/dom and ext/xsl". > RFC link: https://wiki.php.net/rfc/improve_callbacks_dom_and_xsl > > Kind regards > Niels
I have extended the RFC. The new version of the document is 0.2.0. Now not only do I propose to extend the existing registerPhpFunctions method, I also propose to add a registerPhpFunctionsNS method. The latter would allow for a nicer syntax and a namespace-aware API that can help to avoid name clashes with many callbacks. This means there are now two primary votes. Kind regards Niels

Niels Dossche

2 years ago
Hi again On 04/12/2023 23:11, Niels Dossche wrote:
> Hi internals > > On 07/11/2023 20:32, Niels Dossche wrote: >> Hi internals >> >> I'm opening the discussion for my RFC "Improve callbacks in ext/dom and ext/xsl". >> RFC link: https://wiki.php.net/rfc/improve_callbacks_dom_and_xsl >> >> Kind regards >> Niels > > I have extended the RFC. The new version of the document is 0.2.0. > Now not only do I propose to extend the existing registerPhpFunctions method, I also propose to add a registerPhpFunctionsNS method. > The latter would allow for a nicer syntax and a namespace-aware API that can help to avoid name clashes with many callbacks. > > This means there are now two primary votes. > > Kind regards > Niels
I've updated my RFC again based on some feedback I got privately. The new document version is 0.3.0. The change is that instead of registerPhpFunctionsNS I now have registerPhpFunctionNS that no longer uses an array argument, but has a signature of function registerPhpFunctionNS(string $namespaceURI, string $name, callable $callable): void; You can consult the diff on the wiki to get up to speed quickly. Cheers Niels

Niels Dossche

2 years ago
Hi internals On 07/11/2023 20:32, Niels Dossche wrote:
> Hi internals > > I'm opening the discussion for my RFC "Improve callbacks in ext/dom and ext/xsl". > RFC link: https://wiki.php.net/rfc/improve_callbacks_dom_and_xsl > > Kind regards > Niels
It's been almost 2 weeks since the last change to the RFC, and over a month since the discussion started. No discussion has happened in the last 2 weeks. I'd like to move this to voting on Thursday. Due to the holidays I will let the voting run for 3 weeks instead of 2. Please raise any final remarks or complaints now. Kind regards Niels