On Mon, Feb 5, 2018 at 3:39 PM, Michael Morris <tendo...@gmail.com> wrote:
> > > On Mon, Feb 5, 2018 at 8:33 AM, Marco Pivetta <ocram...@gmail.com> wrote: > >> >> On Mon, Feb 5, 2018 at 3:28 PM, Michael Morris <tendo...@gmail.com> >> wrote: >> >>> The problem is that behavior has been around so long that any attempt to >>> change it would incur a massive amount of changes. Using the E_STRICT >>> notice level instead of E_DEPRECATED has been floated as one fix for >>> this, >>> but this doesn't change the fact that major applications and frameworks, >>> such as Drupal, pride themselves in being able to pass all tests even >>> with >>> E_STRICT enabled. The maintainers of these projects would be annoyed to >>> say >>> the least to need to fix thousands of lines of code to get back to that >>> point, and downstream projects such as Drupal could end up waiting years >>> for all their upstream libraries to get their act together. >>> >> >> Much like any upgrade requiring patches for full compliance with newer >> PHP versions, it needs work. >> >> The typical workflow is: >> >> * add PHP.NEXT to the CI setup >> * run everything through the tests again, figure out how much has broken >> * fix it >> >> In this case, we even *already* have *multiple* tools that automatically >> fix this problem in one shot. >> >> Since the two issues are somewhat tied, why not bind them to a >>> configuration flag following the pattern that was used to ultimately >>> remove >>> register_globals functionality from the language? At this point let it >>> be >>> known that when constant/function overloaders hit a php.ini config option >>> will be added to turn them on -- and turning them on will turn global >>> scoping for functions off. >>> >> >> Argh >> >> > Agreed, but you can't just pull the rug out from under people. It's > painful, but it's better to let people opt in to such a major change than > to "break" their code. > We're talking about a deprecation, not removal of a feature. First of all, it doesn't remove the feature, which means that everything keeps working as-is, and second, we already have a way to configure error reporting for deprecations ("configuration") ;-) The point of deprecations is precisely to give downstream time to adjust and release the adapted code, which we do all the time anyway. Marco Pivetta http://twitter.com/Ocramius http://ocramius.github.com/