Son zamanlarda bir proje üzerinde çalışıyorum, bu yüzden gibi, bir statik üye dizide geri aramaları depolamak için gerekli:
class Example {
private static $_callbacks = array(
'foo'=>array('Example','do_foo'),
'bar'=>array('Example','do_bar')
);
private static function do_foo() { }
private static function do_bar() { }
}
Onları aramak için, ben (Example
sınıfının içinde) açık (hatta belki de naif) sözdizimi çalıştı:
public static function do_callbacks() {
self::$_callbacks['foo']();
self::$_callbacks['bar']();
}
Benim için sürpriz, bu ben tanımlanmamış bir değişken, ve self::$_callbacks['foo']
çağrılabilir olması gerektiğini belirten bir ölümcül hata erişen bir haber sonucunda, işe yaramadı.
Sonra, ben denedim call_user_func
:
public static function do_callbacks() {
call_user_func(self::$_callbacks['foo']);
call_user_func(self::$_callbacks['bar']);
}
Ve işe yaradı!
Benim soru:
Why do I need to use call_user_func
bir aracı olarak ve doğrudan doğruya onları aramak değil mi? Strong>