Pregunta ¿Qué es?: En PHP 5.3? [duplicar]


Posible duplicado: ¿A qué se llaman los operadores PHP "?" Y ":" 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. los DIR constante
  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?


75
2018-01-28 08:33


origen


Respuestas:


?: 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, p. expr ?: val_if_false que es equivalente a:

expr ? expr : val_if_false

Desde el manual:

Desde PHP 5.3, es posible omitir la parte central del operador condicional. Expresión expr1 ?: expr3 devoluciones expr1 Si expr1 evalúa a TRUEy expr3 de otra manera.


126
2018-01-28 08:36



los ?: operador es el operador condicional (a menudo referido como el operador ternario):

La expresion (expr1) ? (expr2) : (expr3) evalúa a expr2 Si expr1 evalúa a CIERTOy expr3 Si expr1 evalúa a FALSO.

En el caso de:

expr1 ?: expr2

La expresión evalúa el valor de expr1 Si expr1 es cierto y expr2 de otra manera:

Desde PHP 5.3, es posible omitir la parte central del operador ternario. Expresión expr1 ?: expr3 devoluciones expr1 Si expr1 evalúa a CIERTOy expr3 de otra manera.


35
2018-01-28 08:38



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, ellos no existieron 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 lento, bastante engorroso y propenso a errores (debido al uso de cadenas para definiciones de funciones).


4
2018-01-28 08:38