Edit report at https://bugs.php.net/bug.php?id=54106&edit=1

 ID:                 54106
 Updated by:         ahar...@php.net
 Reported by:        a at b dot c dot de
 Summary:            Shortcut "ternary" companion operator
-Status:             Open
+Status:             Wont fix
 Type:               Feature/Change Request
 Package:            Scripting Engine problem
 Operating System:   Irrelevant
 PHP Version:        Irrelevant
 Block user comment: N
 Private report:     N

 New Comment:

I don't see much value in adding more line noise to the already line noisey 
variations on the ternary operator, personally. Write an RFC and post to 
Internals if you feel strongly about it.

@marrch.caat: You can already do that with $a ?: $b.


Previous Comments:
------------------------------------------------------------------------
[2012-08-27 14:29:26] marrch dot caat at gmail dot com

Looks like the description is a bit weird, or I just couldn't understand it. I 
see no meaning in expression $a ? $c ? $a - but I often use scripts like $a ? 
$a : $b - which means that if $a isn't empty, use it, otherwise use $b.

C# and some other languages have an ?? operator for that, and if it would exist 
in PHP, it'd be possible to write expressions like the following:
$connStr = $currConn ?? $config['defaultConnStr'] ?? requestUserForConnStr();
- which is enough clear and useful. Now it has to be written by either sequence 
of IFs, or by something like:
$connStr = $currConn ? $currConn : ($config['defaultConnStr'] ? 
$config['defaultConnStr'] : requestUserForConnStr());
- which isn't that clear.

------------------------------------------------------------------------
[2011-02-26 15:55:07] a at b dot c dot de

Description:
------------
The expression $a ? $b : $c can be shortened to $a ?: $c if $b==$c.

In this the "?:" operator behaves much like the "||" operator in, say, Perl or 
JavaScript, or the "or" operator of Python: "$a if it looks true, $c otherwise".

But those three languages also have "&&" (or "and") operators which mean "$a if 
it looks false, $c otherwise".

PHP currently lacks such an operator: where Python can have "a and c", PHP 
still needs "$a ? $c : $a", including the potential double evaluation or 
intermediate variable needed if "$a" is anything more complex.

So the Feature Request is another operator, perhaps ":?", which behaves as 
described in the third paragraph above: "$a :? $c" would be an abbreviation for 
and equivalent to "$a ? $c : $a". It's possible to come up with a tortured bit 
of algebra to justify the ":?" symbol, but aesthetic symmetry ought to be 
enough of an excuse both for the symbol and more importantly the operator it 
identifies.



------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=54106&edit=1

Reply via email to