Re: Inconsistencies between parameter number and index when reflecting a method/function
| From: | Gina P. Banyard | Date: | Wed, 15 May 2024 10:19:17 +0000 |
| Subject: | Re: Inconsistencies between parameter number and index when reflecting a method/function | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-123320@lists.php.net to get a copy of this message | ||
On Thursday, 2 May 2024 at 13:48, Ollie Read <php@ollie.codes> wrote:
> Hi All,
>
> I've been working on a PR that introduces ReflectionFunctionAbstract::getParameter() and
> ReflectionFunctionAbstract::hasParameter(), to fall more inline with the other method sets we have,
> as well as just generally making peoples lives easier.
>
> The PR is here: https://github.com/php/php-src/pull/10431
>
> These methods accept an integer to retrieve a parameter by its position, or a string to
> retrieve by its name. So far, I have built this so that if you required the first parameter,
> it's parameter 0. I treat it this way because the only other place where we deal with parameter
> indexes, is ReflectionFunctionAbstract::getParameters() which returns the parameters zero-indexed.
>
> The question that is holding this PR back is should these methods be 1 indexed, so that the
> provided position is consistent with the error messages, or how a person would typically count, or
> should they be 0 indexed to remain consistent with the existing API.
>
> Girgias has asked that I pause the PR until we can have a discussion on this mailing list about
> how to approach it, so I'm looking for feedback on this
I am not sure why I had not thought about checking this earlier, but ReflectionParameter has a
getPosition method [1], where the first parameter of a function/method is 0.
So the _best_ argument for having it 0 indexed based is to be consistent with the existing
semantics.
So I am fine with having it 0 indexed.
Best regards,
Gina P. Banyard
[1] https://www.php.net/manual/en/reflectionparameter.getposition.php
>