Was ist: in PHP 5.3? [Duplikat]
-
23-09-2019 - |
Frage
Mögliche Duplizieren: Was sind die PHP-Operatoren und „?“ „:“ und was tun sie
?
<?PHP
require __DIR__.'/c.php';
if (!is_callable($c = @$_GET['c'] ?: function() { echo 'Woah!'; }))
throw new Exception('Error');
$c();
?>
verwendet Twitto mehr neue Funktionen zur Verfügung, wie von PHP 5.3:
- Die DIR Konstante
- Der Operator?:
- Anonyme Funktionen
-
Was ist die Nummer 2 zu tun mit dem ? in PHP 5.3
-
Auch was bedeuten sie durch anonyme Funktionen? War das nicht etwas, das für eine Weile?
existiert hat
Lösung
?:
ist eine Form des Bedingungsoperators, die bisher zur Verfügung stand nur:
expr ? val_if_true : val_if_false
5.3 ist es möglich, den mittleren Teil wegzulassen, z.B. expr ?: val_if_false
, die gleichbedeutend ist mit:
expr ? expr : val_if_false
Aus dem Handbuch :
Seit PHP 5.3 ist es möglich, den mittleren Teil des Konditionaloperator auszulassen. Expression
expr1 ?: expr3
kehrtexpr1
wennexpr1
auswertet zuTRUE
undexpr3
sonst.
Andere Tipps
Der ?:
Operator ist der bedingte Betreiber (oft als der ternäre Operator verwiesen auf):
Der Ausdruck
(expr1) ? (expr2) : (expr3)
auswertet zuexpr2
wennexpr1
auswertet auf TRUE undexpr3
wennexpr1
auswertet auf false .
Im Fall von:
expr1 ?: expr2
Der Ausdruck ergibt den Wert von expr1
wenn expr1
ist true und expr2
anders:
Seit PHP 5.3 ist es möglich, den mittleren Teil des ternären Operator auszulassen. Expression
expr1 ?: expr3
kehrtexpr1
wennexpr1
auswertet auf TRUE undexpr3
sonst.
Seit PHP 5.3 ist es möglich, den mittleren Teil des ternären Operator auszulassen. Ausdruck expr1: expr3 kehrt expr1 wenn expr1 die Werte TRUE und expr3 anders.
Anonyme Funktionen: Nein, sie nicht existieren (siehe die erste Note unter den Beispielen) vor 5.3.0 , zumindest auf diese Weise:
function ($arg) { /* func body */ }
Der einzige Weg war create_function()
, was langsamer ist, recht umständlich und fehleranfällig (wegen der Strings für Funktionsdefinitionen verwenden).