On 14 December 2014 at 08:24, Leon Sorokin <leeon...@gmail.com> wrote:
>
> On 12/14/2014 12:51 AM, Levi Morrison wrote:
>
> > While I think long-term this would be a beneficial change I think in
> > the short term it's quite a hurdle.
>
> This discussion will be identical whether we wait till PHP7 or PHP9 in a
> decade. The longer this change takes to make, the more code that will be
> mis-written to rely on the current behavior. If any long-term benefit is to
> be reaped, now is the best time to do it - every future major version will
> have a harder justification to make.
>
> > There is definitely code out there relying on this behavior and
> > changing it will result in the worst BC case: it will not fail in any
> > way but will instead act differently.
>
> There are also definitely IE5.5 users out there and websites that rely on
> IE5.5-only features, but the actual numbers matter. There's no doubt that
> somebody, somewhere is going to have broken code because they wrote it
> without reading the docs that recommend against it or without understanding
> how it works, or upgraded without reading a migration guide or realizing
> that major version upgrades do make breaking changes (more often than not).
> These people do exist and they may curse PHP rather than themselves and
> leave it forever; the desire of the core team to retain the maximum amount
> of these users is puzzling. The change under discussion will not be causing
> any sort of mass-exodus from PHP, the ecosystem will not collapse and it
> will not be the heat-death of the universe. It will be removing a
> long-discouraged behavior and bring expected uniformity to a common
> construct that has differed for no good reason from other languages.
>
> There's plenty of room for a #5 on the already non-0 list:
> https://wiki.php.net/phpng#incompatibilities_made_on_
> purpose_and_are_not_going_to_be_fixed
>
>  In my opinion, chaining or nesting ternaries at all
>> should be discouraged; changing the associativity doesn't change the
>> fact that they are more difficult to follow and more error prone than
>> using different constructs.
>>
>
> I would disagree on this point. Just like there are cases where a large
> switch/case results in more readable if-elseif chains, long conditional
> assignment chains can serve the same purpose, granted you space them
> appropriately. I would even go as far as saying that with proper spacing,
> they are more readable than the 'if' or 'case' blocks that would need to
> replace them.
>
> --
> Leon Sorokin
>
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>
If you wanted an upgrade path that was not Evil (in the sense of not
introducing subtle and hard-to-diagnose bugs), could you not change the
operator to be *un*associative in PHP7?  That would effectively just make
concrete the discouragement/deprecation that's already in the
documentation, and would produce irritating but very visible errors for
anyone still actually using this functionality, as well as making them
alter their code in a forward-compatible way.  Then if you want to think
really long term, plan to implement the 'correct' associativity in the
*next* major version.

--G

Reply via email to