Frage Was ist?: In PHP 5.3? [Duplikat]


Mögliche Duplikate: Was heißen die PHP-Operatoren "?" Und ":" und was machen sie?

Von http://twitto.org/

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

Twitto verwendet einige neue Funktionen, die ab PHP 5.3 verfügbar sind:

  1. Das DIR Konstante
  2. Der Operator?:
  3. Anonyme Funktionen

  1. Was macht Nummer 2 mit der ?: in PHP 5.3?

  2. Was meinen sie auch mit anonymen Funktionen? War das nicht schon etwas länger?


75
2018-01-28 08:33


Ursprung


Antworten:


?: ist eine Form des Bedingungsoperators, die bisher nur verfügbar war als:

expr ? val_if_true : val_if_false

In 5.3 ist es möglich, den mittleren Teil, z. expr ?: val_if_false was entspricht:

expr ? expr : val_if_false

Von dem Handbuch:

Seit PHP 5.3 ist es möglich, den mittleren Teil des Bedingungsoperators wegzulassen. Ausdruck expr1 ?: expr3 kehrt zurück expr1 ob expr1 bewertet zu TRUE, und expr3 Andernfalls.


126
2018-01-28 08:36



Das ?: Betreiber ist der bedingter Operator (oft als ternärer Operator bezeichnet):

Der Ausdruck (expr1) ? (expr2) : (expr3) bewertet zu expr2 ob expr1 bewertet zu WAHR, und expr3 ob expr1 bewertet zu FALSCH.

Im Falle des:

expr1 ?: expr2

Der Ausdruck ergibt den Wert von expr1 ob expr1 ist wahr und expr2 Andernfalls:

Seit PHP 5.3 ist es möglich, den mittleren Teil des ternären Operators wegzulassen. Ausdruck expr1 ?: expr3 kehrt zurück expr1 ob expr1 bewertet zu WAHR, und expr3 Andernfalls.


35
2018-01-28 08:38



Schau hier:

Seit PHP 5.3 ist es möglich, den mittleren Teil des ternären Operators wegzulassen. Expression expr1?: Expr3 gibt expr1 zurück, wenn expr1 TRUE ergibt, andernfalls expr3.

Anonyme Funktionen: Nein, sie existierten nicht vor 5.3.0 (siehe die erste Anmerkung unter den Beispielen), zumindest auf diese Weise:

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

Der einzige Weg war create_function(), das ist langsamer, ziemlich umständlich und fehleranfällig (wegen der Verwendung von Strings für Funktionsdefinitionen).


4
2018-01-28 08:38