varias operator estructuras else condiciones condicionales php php-5.3 ternary-operator conditional-operator language-construct

operator - or en php



¿Qué es?: En PHP 5.3? (3)

Posible duplicado: ¿Cuáles son los operadores PHP "?" Y ":" llamados y ¿qué hacen?

De http://twitto.org/

<?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:

  1. La constante DIR
  2. El operador
  3. Funciones anónimas
  1. ¿Qué hace el número 2 con el ?: En PHP 5.3?

  2. 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 a expr2 si expr1 evalúa a TRUE , y expr3 si expr1 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 devuelve expr1 si expr1 evalúa como VERDADERO , y expr3 caso contrario.


Mira aquí:

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 devuelve expr1 si expr1 evalúa como TRUE , y expr3 caso contrario.