On 22.08.2016 at 13:17, Nicolas Grekas wrote: > now that the BC break on ReflectionType has been reverted, another one > remains in ReflectionMethod::invoke(): > > the method doesn't accept a string as first argument anymore, see e.g.: > > https://3v4l.org/pImmv > > As you can see, this worked since 5.0 and even in HHVM. > > It would be great to fix this BC break please.
The BC break is caused by implementing feature requrest #38992 (<https://bugs.php.net/bug.php?id=38992>), which has been posted nearly 10 years ago. My analysis as posted in the bug report: | Actually, the first parameter to ReflectionMethod::invoke() is | completely ignored, if the method is a static method, see | <https://3v4l.org/e9h1S>. A comment in the sources[1] also | explains the reasoning. | | This doesn't make any sense, however, because for static methods | to be invoked, NULL is supposed to be passed as first parameter to | ::invoke() as well as ::invokeArgs(). Allowing an arbitrary | argument is confusing at best. | | Changing the behavior would introduce a BC break, though, so it | appears to be reasonable to do that for PHP 7.1 only. | | [1] <https://github.com/php/php-src/blob/PHP-7.0.10/ext/reflection/php_reflection.c#L3197-L3202> If so desired, I can revert that commit, but I wouldn't be happy with sticking with a completely unused parameter, which obviously has been and still is misunderstood. -- Christoph M. Becker -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php