Sınıf yöntemlerini çağrıyı geri çağırma olarak kaydetme


16

Bunu doğru bir şekilde yapıp yapmadığımdan emin değilim.

Anladığım kadarıyla:

Eğer bir sınıf foo ve statik bir yöntem çubuğum varsa, dizi array("foo","bar")işlev adı olarak geçirerek geri arama olarak kaydedebilirsiniz .

$ Foo bir sınıf örneği varsa ve yöntem çubuğunu çağırmak istiyorsanız dizi geçmek array($foo,'bar').

Sınıfın içinde bir eylem kaydetmem gerekirse, bununla çalışır array($this,'bar')mı?


3
Bir test soruyu sormaktan daha hızlı olmaz mı? ;) Evet, bunu yapabilirsin.
fuxia

2
Bir test yardımcı olabilir, ancak bazen geri bildirim de ararsınız. Bence soruyu sormak uygun değil ve bu kural var, OP'nin motivasyonunu sorguluyor ... :)
hakre

Yanıtlar:


11

Sınıfın içinde bir eylem kaydetmem gerekirse, bununla çalışır array($this, 'bar')mı?

Evet çalışıyor. $thisDokümanlar geri arama için gerekli somut örneğe başvuruyor . Bu tam olarak verdiğiniz $fooörneğe benziyor . Sadece $thisbiraz daha özel, ama temelde aynı temsil eder ve PHP geri çağrıları ile kusursuz çalışır.

Ek:

Eğer bir sınıf foo ve statik bir yöntem çubuğum varsa, dizi array("foo","bar")işlev adı olarak geçirerek geri arama olarak kaydedebilirsiniz .

Evet bunu yapabilirsiniz, statik işlev için, siz de yerine dizinin bir dize olarak yazabiliriz: foo::barbkz Callbacks Dokümanlar . Kullanışlı olabilir.


1

Statik yöntemler için bunu da yapabilirsiniz:

['foo','bar'] 

Aşağıdaki tanımlanmamış sınıf sabit 'bar' verdiğinde :

foo::bar

örnek - için $ control_callback belirtirken wp_add_dashboard_widget

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.