This is not a default value (i.e. you can use = null in middle of required
parameters), but defacto a nullable parameter type.
Default values should and will always be changeable between functions in an
inheritance tree.
And while it's a tiny BC break, one can very easily fix the function from
PHP method compatibility rules didn't take into account default values of
arguments.
Adding new rule is not just a bug fix, and breaks existing code.
From: Bob Weinand
Sent: Thursday, April 28, 2016 9:12:54 PM
To: Dmitry Stogov
Cc:
Yeah,
It's a BC break; hence I've accepted it being reverted from 7.0.
I've only put the fix back in 7.1 thus.
Or is it your opinion that we shall hold a formal RFC vote for a glaring bug?
That sounds pretty much like a waste of everyones time to me. RFC votes IMO are
for cases where we don't
This is a "fix", that introduces BC break.
Even if I see a reason in this check, it's still a break.
If you remember, we voted for almost for every BC break during PHP-7.0
development.
From: Bob Weinand
Sent: Thursday, April 28,
all these are good points not to commit BC breaks in hurry.
From: Joe Watkins
Sent: Thursday, April 28, 2016 8:41:34 PM
To: Bob Weinand
Cc: Dmitry Stogov; Anatol Belski; internals; Levi Morrison
Subject: Re: [PHP-DEV] Request to withdraw
The problem is as Levi explained though Bob, don't we actually require
nullables/unions for that case ?
Maybe we can move forward now, confident that by the time 7.1 is released
we will have one of those things ?
The problems with that are, the RFC's for unions/intersections don't match
the
> Am 28.04.2016 um 18:28 schrieb Dmitry Stogov :
>
> Hi,
>
> The BC break in PHP-7.0 was introduced by commit
> ee9a78a033696ff9546fb1dbfecd28f20477b511
>
> Author: Joe Watkins
> Date: Mon Mar 28 11:54:25 2016 +0100
>
> Late, there were few more commits
I have discovered through a [bug report][1] a case where having
explicitly nullable parameters would be of value.
You can theoretically change the default value in a sub-type, but in
this case moving away from the default value of null breaks because
the subtype no longer permits null. It is