operator - or en php
¿Qué es?: En PHP 5.3? (3)
Posible duplicado: ¿Cuáles son los operadores PHP "?" Y ":" llamados y ¿qué hacen?
<?PHP
require __DIR__.''/c.php'';
if (!is_callable($c = @$_GET[''c''] ?: function() { echo ''Woah!''; }))
throw new Exception(''Error'');
$c();
?>
Twitto usa varias características nuevas disponibles a partir de PHP 5.3:
- La constante DIR
- El operador
- Funciones anónimas
¿Qué hace el número 2 con el ?: En PHP 5.3?
Además, ¿qué quieren decir con funciones anónimas? ¿No era eso algo que ha existido por un tiempo?
El operador ?:
Es el operador condicional (a menudo denominado operador ternario):
La expresión
(expr1) ? (expr2) : (expr3)
(expr1) ? (expr2) : (expr3)
evalúa aexpr2
siexpr1
evalúa a TRUE , yexpr3
siexpr1
evalúa como FALSE .
En el caso de:
expr1 ?: expr2
La expresión evalúa el valor de expr1
si expr1
es verdadero y expr2
contrario:
Desde PHP 5.3, es posible omitir la parte central del operador ternario. Expresión
expr1 ?: expr3
devuelveexpr1
siexpr1
evalúa como VERDADERO , yexpr3
caso contrario.
Desde PHP 5.3, es posible omitir la parte central del operador ternario. Expresión expr1?: Expr3 devuelve expr1 si expr1 se evalúa como VERDADERO, y expr3 en caso contrario.
Funciones anónimas: No, no existían antes de 5.3.0 (vea la primera nota debajo de los ejemplos), al menos de esta manera:
function ($arg) { /* func body */ }
La única forma era create_function()
, que es más lenta, bastante engorrosa y propensa a errores (debido al uso de cadenas para definiciones de funciones).
?:
es una forma del operador condicional que anteriormente estaba disponible solo como:
expr ? val_if_true : val_if_false
En 5.3 es posible omitir la parte central, por ej expr ?: val_if_false
que es equivalente a:
expr ? expr : val_if_false
Del manual :
Desde PHP 5.3, es posible omitir la parte central del operador condicional. Expresión
expr1 ?: expr3
devuelveexpr1
siexpr1
evalúa comoTRUE
, yexpr3
caso contrario.