> Le 10 avr. 2019 à 21:21, Stanislav Malyshev <smalys...@gmail.com> a écrit :
> 
> Hi!
> 
>> Inspired by Bob's recent RFC for concat precedence, I'd like to propose a
>> deprecation and removal of the left-associative behavior of ternaries.
>> Instead, explicit parentheses should be used:
>> 
>> https://wiki.php.net/rfc/ternary_associativity
> 
> Please, let's not mess with language syntax and require people to
> rewrite their code just because suddenly after 20 years of existence in
> the language we feel maybe the precedence should be different. I
> literally can't think of a single case where it would improve anyone's
> life in any substantial way.

I bet that more than one developer has once written <?php cond1 ? value1 : 
cond2 ? value2 : value3 ?>, and later has wasted a nontrivial amount of time in 
order to understand why they got some wrong result. So, definitely, making that 
trap a syntax error is a real tangible improvement of the language. 

> If you wanted to use parentheses, you can
> do it now - you can even have it enforced by code analyzer if you wish
> so, in your private code base.

A language that requires their users to use a code analyser (or to read the 
manual thoroughly before starting to code) in order to keep their sanity, well, 
... has a problem. 
 
> But I can easily imagine dealing with
> tons of deprecation warnings (which usually break CI unit tests and
> wreak general havoc) or even worse, useless errors, in existing code,
> which would become broken for no reason

As I can’t imagine a case where someone would have taken advantage of the 
current left-associativity semantics, I can’t imagine either someone dealing 
with “a ton of deprecation warnings” because of that. But TBH, my imagination 
is sometimes very selective. However, what I can imagine, is that hidden bugs 
will be revealed as a side-effect of those deprecation warnings, and time will 
be taken to understand and correct them. 

—Claude

> but... honestly, I don't even
> know how to finish this phrase, I can't even think of a single reason I
> could explain to anybody why their code would no longer work in 8.0.
> 
> I understand 8.0 is a good target for breaking things. But that doesn't
> mean we have to do it as much as possible.
> 
> And this absolutely doesn't mean we need to get 7.4 to break things (and
> yes, deprecation warning is breaking things, in most cases).
> -- 
> Stas Malyshev
> smalys...@gmail.com
> 
> -- 
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
> 

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

Reply via email to