Frage

  

Mögliche Duplizieren:    Was sind die PHP-Operatoren und „?“ „:“ und was tun sie

?

http://twitto.org/

<?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:

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

  1. Was ist die Nummer 2 zu tun mit dem ? in PHP 5.3

  2. Auch was bedeuten sie durch anonyme Funktionen? War das nicht etwas, das für eine Weile?

  3. existiert hat
War es hilfreich?

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 kehrt expr1 wenn expr1 auswertet zu TRUE und expr3 sonst.

Andere Tipps

Der ?: Operator ist der bedingte Betreiber (oft als der ternäre Operator verwiesen auf):

  

Der Ausdruck (expr1) ? (expr2) : (expr3) auswertet zu expr2 wenn expr1 auswertet auf TRUE und expr3 wenn expr1 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 kehrt expr1 wenn expr1 auswertet auf TRUE und expr3 sonst.

Schauen Sie hier:

  

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).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top