Possible Duplicate: What are the PHP operators “?” and “:” called and what do they do?
From http://twitto.org/
<?PHP require __DIR__.'/c.php'; if (!is_callable($c = @$_GET['c'] ?: function() { echo 'Woah!'; })) throw new Exception('Error'); $c(); ?> Twitto uses several new features available as of PHP 5.3:
What does number 2 do with the ?: in PHP 5.3?
Also, what do they mean by anonymous functions? Wasn't that something that has existed for a while?
Since PHP 5.3, it is possible to leave out the middle part of the ternary operator. Expression expr1 ?: expr3 returns expr1 if expr1 evaluates to TRUE, and expr3 otherwise. The only way was create_function() , which is slower, quite cumbersome and error prone (because of using strings for function definitions).
The ternary conditional operator ?: allows us to define expressions in Java. It's a condensed form of the if-else statement that also returns a value.
?: is a form of the conditional operator which was previously available only as:
expr ? val_if_true : val_if_false In 5.3 it's possible to leave out the middle part, e.g. expr ?: val_if_false which is equivalent to:
expr ? expr : val_if_false From the manual:
Since PHP 5.3, it is possible to leave out the middle part of the conditional operator. Expression
expr1 ?: expr3returnsexpr1ifexpr1evaluates toTRUE, andexpr3otherwise.
The ?: operator is the conditional operator (often refered to as the ternary operator):
The expression
(expr1) ? (expr2) : (expr3)evaluates toexpr2ifexpr1evaluates to TRUE, andexpr3ifexpr1evaluates to FALSE.
In the case of:
expr1 ?: expr2 The expression evaluates to the value of expr1 if expr1 is true and expr2 otherwise:
Since PHP 5.3, it is possible to leave out the middle part of the ternary operator. Expression
expr1 ?: expr3returnsexpr1ifexpr1evaluates to TRUE, andexpr3otherwise.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With