2012-07-10 10 views
65

Ero in giro con le funzioni anonime in PHP e ho capito che non sembravano raggiungere variabili al di fuori di esse. C'è un modo per aggirare questo problema?variabili php in funzioni anonime

Esempio:

$variable = "nothing"; 

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

echo $variable; 

Will uscita: "niente". C'è un modo in cui la funzione anonima può accedere alla variabile $?

risposta

168

Sì, use a closure:

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

Nota che, per poter essere in grado di modificare $variable e recuperare il valore modificato al di fuori del campo di applicazione della funzione anonima, si deve fare riferimento nella chiusura utilizzando & .

+1

Fantastico! Mai visto prima .. =) – einord

+0

È nuovo! La sintassi è nuova in PHP 5.3. –

+1

@Rocket Quindi, ad essere sinceri, è la sintassi della funzione anonimo vera (al contrario di 'create_function()') e la parola chiave 'use' è documentata (male) sulla [stessa pagina doc] (http: // php. net/manual/it/functions.anonymous.php) che li descrive. – DaveRandom