Mendaftarkan metode Kelas sebagai panggilan balik hook

16

Saya tidak yakin apakah saya telah melakukan ini dengan benar.

Seperti yang saya pahami:

jika saya memiliki kelas foo dan bilah metode statis saya dapat mendaftarkannya sebagai callback dengan melewatkan array array("foo","bar")sebagai nama fungsi.

Jika saya memiliki turunan sebuah kelas dalam $ foo dan ingin memanggil metode bar, saya meneruskan array array($foo,'bar').

Jika saya perlu mendaftarkan suatu tindakan di dalam kelas itu sendiri, apakah itu akan berhasil array($this,'bar')?

Daniel Chatfield
sumber
3
Bukankah tes akan lebih cepat daripada mengajukan pertanyaan? ;) Ya, Anda bisa melakukan ini.
fuxia
2
Tes dapat membantu, tetapi terkadang Anda juga mencari umpan balik. Saya pikir tidak apa-apa untuk benar-benar mengajukan pertanyaan, dan ada aturan ini, yang mempertanyakan motivasi
OPs

Jawaban:

11

Jika saya perlu mendaftarkan suatu tindakan di dalam kelas itu sendiri, apakah itu akan berhasil array($this, 'bar')?

Ya itu berhasil. $thisDocuments mengacu pada contoh konkret yang diperlukan untukcallback. Persis seperti$foocontoh yang Anda berikan. Hanya saja itu$thissedikit lebih istimewa, tetapi pada dasarnya sama dan berfungsi dengan baik dengan panggilan balik di PHP.

Tambahan:

jika saya memiliki kelas foo dan bilah metode statis saya dapat mendaftarkannya sebagai callback dengan melewatkan array array("foo","bar")sebagai nama fungsi.

Ya, Anda dapat melakukannya, untuk fungsi statis, Anda dapat menuliskannya sebagai string, bukan array :,foo::bar lihat Callbacks Docs . Mungkin berguna.

hakre
sumber
1

Untuk metode statis, Anda juga dapat melakukan ini:

['foo','bar'] 

ketika yang berikut memberikan 'bar' konstanta kelas Tidak Terdefinisi :

foo::bar

contoh - saat menentukan $ control_callback untuk wp_add_dashboard_widget

William Turrell
sumber