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 aexpr2siexpr1evalúa a TRUE , yexpr3siexpr1evalú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 ?: expr3devuelveexpr1siexpr1evalúa como VERDADERO , yexpr3caso 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 ?: expr3devuelveexpr1siexpr1evalúa comoTRUE, yexpr3caso contrario.