Re: [RFC] Implicit isset() in Shorthand Ternary Operator

From: Date: Tue, 09 Sep 2014 00:16:02 +0000
Subject: Re: [RFC] Implicit isset() in Shorthand Ternary Operator
References: 1 2 3 4 5 6 7 8 9  Groups: php.internals 
Request: Send a blank email to internals+get-77107@lists.php.net to get a copy of this message
On 8 September 2014 17:07, Andrea Faulds <ajf@ajf.me> wrote: > > On 8 Sep 2014, at 23:58, Adam Harvey <aharvey@php.net> wrote: > >> +1 on ?? — there's precedent for it, and it means we don't have to >> explain why the shorthand form of an operator behaves differently to >> the long form, which is just going to confuse users. > > FWIW, it already behaves differently: > > oa-res-27-90:~ ajf$ php -r 'function foo() { echo "foo\n"; return true; } $x > = foo() ?: false;' > foo > oa-res-27-90:~ ajf$ php -r 'function foo() { echo "foo\n"; return true; } $x > = foo() ? foo() : false;' > foo > foo You could argue whether that's unexpected behaviour or not — there is only one foo() call in the shorthand version, after all, so it makes intuitive sense that foo() would only be called once. Regardless of how you feel about that, though, I don't think increasing the amount of inconsistency between two versions of the same operator (forget the implementation; that's how it's documented and how it's perceived) is a good idea. Adam

« previous php.internals (#77107) next »