Qu'est-ce que: en PHP 5.3? [dupliquer]
-
23-09-2019 - |
Question
Possible en double: Quels sont les opérateurs PHP et « ? » « : » appelé et que font-ils
<?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:
- DIR constante
- : opérateur
- Les fonctions anonymes
-
Qu'est-ce que le numéro 2 faire avec : en PHP 5.3
-
En outre, ce qu'ils ne signifient par des fonctions anonymes? Était-ce pas quelque chose qui existe depuis un certain temps?
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
Depuis PHP 5.3, il est possible de quitter la partie centrale de l'opérateur conditionnel. L'expression retourne
expr1 ?: expr3
expr1
siexpr1
évalue àTRUE
etexpr3
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
siexpr1
évalue à TRUE , etexpr3
siexpr1
é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
siexpr1
évalue à TRUE , etexpr3
autrement.
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).