Question

  

Possible en double:    Quels sont les opérateurs PHP et « ? » « : » appelé et que font-ils

De http://twitto.org/

<?PHP
    require __DIR__.'/c.php';
    if (!is_callable($c = @$_GET['c'] ?: function() { echo 'Woah!'; }))
        throw new Exception('Error');
    $c();
?>

Twitto utilise plusieurs nouvelles fonctionnalités disponibles depuis PHP 5.3:

  1. DIR constante
  2. : opérateur
  3. Les fonctions anonymes

  1. Qu'est-ce que le numéro 2 faire avec : en PHP 5.3

  2. En outre, ce qu'ils ne signifient par des fonctions anonymes? Était-ce pas quelque chose qui existe depuis un certain temps?

Était-ce utile?

La solution

?: est une forme de l'opérateur conditionnel qui était auparavant disponible uniquement comme:

expr ? val_if_true : val_if_false

Dans 5.3, il est possible de quitter la partie centrale, par exemple expr ?: val_if_false qui est équivalent à:

expr ? expr : val_if_false

De la manuel:

  

Depuis PHP 5.3, il est possible de quitter la partie centrale de l'opérateur conditionnel. L'expression retourne expr1 ?: expr3 expr1 si expr1 évalue à TRUE et expr3 autrement.

Autres conseils

L'opérateur ?: est le conditionnelle opérateur (très souvent désignée comme l'opérateur ternaire):

  

L'expression (expr1) ? (expr2) : (expr3) est évaluée à expr2 si expr1 évalue à TRUE , et expr3 si expr1 évalue à false .

Dans le cas de:

expr1 ?: expr2

L'expression est évaluée à la valeur de expr1 si expr1 est true et expr2 autrement:

  

Depuis PHP 5.3, il est possible de quitter la partie centrale de l'opérateur ternaire. L'expression retourne expr1 ?: expr3 expr1 si expr1 évalue à TRUE , et expr3 autrement.

Regardez ici:

  

Depuis PHP 5.3, il est possible de quitter la partie centrale de l'opérateur ternaire. Expression Expr1: retourne Expr3 expr1 si expr1 TRUE et expr3 autrement.

Les fonctions anonymes: Non, ils n'existaient pas avant 5.3.0 (voir la première note ci-dessous des exemples), au moins de cette façon:

function ($arg) { /* func body */ }

La seule façon était create_function(), ce qui est plus lent, assez lourd et sujette aux erreurs (en raison de l'utilisation de chaînes pour les définitions de fonction).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top