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/

Reply via email to