2012-07-10 24 views
65

PHP'de anonim işlevlerle oynuyordum ve bunların dışındaki değişkenlere ulaşmadıklarını fark ettim. Bu sorunun üstesinden gelmenin bir yolu var mı?Anonim işlevlerde php değişkeni

Örnek:

$variable = "nothing"; 

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

echo $variable; 

Will çıkışı: "hiç". Anonim işlevinin $ değişkenine erişebilmesinin bir yolu var mı?

cevap

168

Evet, use a closure: Eğer $variable değiştirebilir ve anonim fonksiyonunun kapsamı dışında değiştirilen değerini almak mümkün olabilmesi için de, bu kapatma & kullanılarak başvurulan gerektiğini

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

Not .

+1

Awesome! Bunu daha önce hiç görmedim .. =) – einord

+0

Yeni! PHP 5.3'te yeni olan sözdizimi. –

+1

@Rocket Bu yüzden, adil olmak gerekirse, gerçek bir anonim işlev sözdizimi ('create_function() ')' ın tersi ve' use' anahtar sözcüğü [aynı belge] sayfasında (kötü) belgelenmiştir (http: // php. net/manual/en/functions.anonymous.php) bunları açıklar. – DaveRandom

İlgili konular