Saya seorang pemula di PHP dan WordPress, jadi harap lembut!
Saya sedang membangun sebuah plugin - mengikuti beberapa tutorial, membuat semuanya berfungsi.
Pertanyaan saya adalah mengapa fungsi yang ingin saya panggil terbungkus array($this, function)
? Sebagai contoh saya memiliki kode konstruktor ini di dalam kelas saya
function __construct() {
add_action( 'admin_init',array( $this, 'getStuffDone' ) );
}
Fungsi getStuffDone dipecat OK - tetapi mengapa harus dalam format yang ada di dalamnya?
Wawasan apa pun sangat dihargai.
add_action
dengan Kelas dan PHP Melewati ke FungsiJawaban:
Ini adalah panggilan balik PHP . Anda memerlukan sintaks untuk menyimpan referensi ke instance kelas.
Begini - jika Anda tidak punya
$this
, bagaimana penelepon tahu itugetStuffDone
adalah metode kelas Anda, dan bukan hanya fungsi PHP biasa? Tidak.Menggunakan
array( $this, 'getStuffDone' )
kata ke PHP:sumber
except language constructs such as: array()
, tetapi di sini kita melewati sebuah array. Apakah ini salah ketik atau saya salah membaca kalimat?yang ADD_ACTIONsebagai () definisi fungsi terlihat seperti:
jadi menurut itu seperti yang diharapkan (string, string, int, int)
Dalam file php tradisional parameter kedua hanya akan menjadi salah satu nama fungsi Anda.
jadi Anda akan melakukannya
add_action('admin_init','my_init_function')
Sepertinya Anda menggunakan kelas untuk mengenkapsulasi plugin Anda. Kelas-kelas lain bisa memiliki fungsi di dalamnya dengan nama yang sama ( getStuffDone ).
Jadi fungsi Anda hanya diketahui dengan referensi ke kelas Anda, itu sebabnya Anda harus menentukan kelas Anda
$this
serta nama fungsinya.Jika Anda mencoba untuk mereferensikan fungsi di dalam kelas Anda harus menggunakan sintaks callable array
Lihat juga codex.wordpress.org
sumber
Lihat dokumentasi, di bawah " Catatan Kontribusi Pengguna ":
sumber