$apples
assumerà il valore che viene passato alla funzione quando viene chiamato, ad es.
function my_method($callback) {
// inside the callback, $apples will have the value "foo"
$callback('foo');
}
$oranges
farà riferimento al valore della variabile $oranges
esistente nell'area in cui è definita la chiusura. Es .:
$oranges = 'bar';
my_method(function($apples) use ($oranges) {
// $oranges will be "bar"
// $apples will be "foo" (assuming the previous example)
});
Le differenze è che $oranges
è vincolata quando la funzione è definita e $apples
è vincolata quando la funzione è chiamato .
Le chiusure consentono di accedere a variabili definite al di fuori della funzione, ma è necessario indicare esplicitamente a PHP quali variabili devono essere accessibili. Questo è simile (ma non equivalente!) Ad usare la parola chiave global
se la variabile è definita in ambito globale:
$oranges = 'bar';
my_method(function($apples) {
global $oranges;
// $oranges will be "bar"
// $apples will be "foo" (assuming the previous example)
});
Le differenze tra l'utilizzo di chiusure e global
:
- è possibile associare locale variabili alle chiusure,
global
funziona solo con variabili globali.
Chiusure legano il valore della variabileal momento della chiusura era definito. Le modifiche alle variabili dopo che la funzione è stata definita non hanno effetto.
D'altra parte, se si utilizza global
, si riceverà il valore della variabile nel momento in cui la funzione è denominata.
Esempio: [? In PHP 5.3.0, qual è la funzione di "usare" identificatore]
$foo = 'bar';
$closure = function() use ($foo) {
echo $foo;
};
$global = function() {
global $foo;
echo $foo;
};
$foo = 42;
$closure(); // echos "bar"
$global(); // echos 42
fonte
2013-09-04 14:16:40
Possibile duplicato (http://stackoverflow.com/questions/1065188/in- php-5-3-0-quale-è-l'-uso-identificativo) – Trix