Re: Re: Strict type declarations not enforced for Reflection API invocation
| From: | lists@rhsoft.net | Date: | Tue, 10 Oct 2017 15:10:15 +0000 |
| Subject: | Re: Re: Strict type declarations not enforced for Reflection API invocation | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-100855@lists.php.net to get a copy of this message | ||
Am 10.10.2017 um 16:57 schrieb Christoph M. Becker:
On 10.10.2017 at 15:41, Sebastian Bergmann wrote:yes but the file in question has strict-types enabled declare(strict_types=1);I consider this a serious bug that leads to unexpected, confusing problems such as https://github.com/sebastianbergmann/phpunit/issues/2796#issuecomment-335180273. I understand Nikita's point of view (see https://github.com/php/php-src/pull/2837#issuecomment-335405067) that changing this behavior (aka. fixing this bug) can be considered a "non-trivial backwards compatibility break". Therefore I would like to bring this issue to the attention of this list with this mail.This is most certainly not an *implementation* bug. The RFC which introduced strict typing[1] states: | By default, all PHP files are in weak type-checking mode.
And later: | This proposal takes the standpoint that it's up to the caller to | decide how functions should be called. | […] | Therefore, this proposal does not allow internal developers to | “opt-in” to strict typing.yes but the file in question has strict-types enabled declare(strict_types=1);
In case of bug #75345 the caller is a method of ReflectionFunction, which is defined in weak type-checking mode.yes but the file in question has strict-types enabled declare(strict_types=1);
One may argue that this is a *design* bug, but after nearly two years of PHP 7 there may be a lots of code relying on the current behavior, so in my opinion changing the behavior could not really be regarded as fixing a bug. [1] <https://wiki.php.net/rfc/scalar_type_hints_v5>yes but the file in question has strict-types enabled declare(strict_types=1); that decalare line was the explicit wish of the person who wrote the php file