Hey,

While I generally agree that it likely is a bug in new code, I would rather 
deprecate it than warn or even error: the change would make it impossible to 
retain a type without warning while preserving compatibility with an old PHP 
version and making incremental migrations harder (would then not be possible to 
write warning-free code running on 7.0 and 8.0 at the same time while retaining 
type information).

I would like to see it deprecated and then removed in 4+ years.

Bob

> Am 09.01.2020 um 13:27 schrieb Nikita Popov <nikita....@gmail.com>:
> 
> Hi internals,
> 
> I've created https://github.com/php/php-src/pull/5067 to make code like
> 
>    function test($foo = null, $bar) {}
> 
> throw a warning:
> 
>    Warning: Required parameter $bar follows optional parameter
> 
> Historically, having an "optional" parameter before a required one was
> useful for poor man's nullable types. That is, one could write
> 
>    function test(FooBar $param = null, $param2)
> 
> to get an effective
> 
>    function test(?FooBar $param, $param2)
> 
> signature on old PHP versions that did not have native support for nullable
> types.
> 
> Since nullable types have been available since PHP 7.1, having a required
> parameter after an optional one is increasingly likely a bug rather than an
> intentional workaround, so I think it would be good to throw a warning for
> this case.
> 
> What do you think?
> 
> Nikita

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to