2012-07-10 4 views
65

Ich spielte mit anonymen Funktionen in PHP und erkannte, dass sie nicht Variablen außerhalb von ihnen zu erreichen scheinen. Gibt es eine Möglichkeit, dieses Problem zu umgehen?PHP-Variablen in anonymen Funktionen

Beispiel:

$variable = "nothing"; 

functionName(someArgument, function() { 
    $variable = "something"; 
}); 

echo $variable; 

ausgegeben: "Nichts". Gibt es eine Möglichkeit, dass die anonyme Funktion auf die Variable $ zugreifen kann?

Antwort

168

Ja, use a closure:

functionName(someArgument, function() use(&$variable) { 
    $variable = "something"; 
}); 

Beachten Sie, dass für Sie, um der Lage sein, $variable zu modifizieren und außerhalb des Anwendungsbereichs der anonymen Funktion den geänderten Wert abzurufen, muss er in der Verschluss & mit referenziert werden .

+1

Super! Nie zuvor gesehen .. =) – einord

+0

Es ist neu! Es ist eine neue Syntax in PHP 5.3. –

+1

@Rocket Also, um fair zu sein, ist die wahre anonyme Funktion Syntax (im Gegensatz zu 'create_function()') und das 'use' Schlüsselwort ist dokumentiert (schlecht) auf der [gleichen Dokumentseite] (http: // php. net/manual/de/functions.anonymous.php), die sie beschreibt. – DaveRandom