Saat mencari melalui cuplikan / tutorial / plugin WordPress saya sering melihat add_action()
dan add_filter()
ditempatkan sebelum fungsi tersebut dinyatakan:
add_action( 'publish_post', 'email_friends' );
function email_friends( $post_ID ) {
$friends = '[email protected], [email protected]';
mail( $friends, "sally's blog updated" , 'I just put something on my blog: http://blog.example.com' );
return $post_ID;
}
Dari sudut pandang logika, ini tidak masuk akal bagi saya. Mengapa Anda menempatkan fungsi setelah dipanggil dalam kode Anda? Ini biasanya bagaimana saya akan menangani situasi yang sama:
function email_friends( $post_ID ) {
$friends = '[email protected], [email protected]';
mail( $friends, "sally's blog updated" , 'I just put something on my blog: http://blog.example.com' );
return $post_ID;
}
add_action( 'publish_post', 'email_friends' );
Saya tahu kedua skenario berfungsi, tetapi apakah ada keunggulan khusus untuk satu atau yang lain? Sekitar 90% dari waktu saya melihat skenario pertama sedang digunakan, sehingga membuat saya percaya ada manfaatnya.
sumber
Sebenarnya tidak ada perbedaan nyata, saya misalnya lebih suka mengikuti skenario pertama, karena lebih baik untuk menempatkan panggilan di satu tempat, dan mendefinisikan fungsi di bawahnya. PHP mem-parsing seluruh dokumen sebelum menjalankan apa pun, dan jika fungsi-fungsi didefinisikan dengan benar, semuanya akan bekerja secara normal, tidak ada keuntungan dalam skenario mana pun.
Saya percaya pepatah di sini adalah: Apa pun yang mengapung perahu Anda :)
sumber
call_user_func_array()
(kemungkinan besar) dipanggil setelah definisi fungsi Anda saat menjalankando_action
. Jadi, Anda dapat mendefinisikan fungsi terkait di mana saja hingga saat itu.4 tahun kemudian, tapi saya yakin itu akan membantu orang-orang datang ke sini dari pencarian.
Seperti yang dinyatakan orang lain, tidak ada perbedaan karena php mem-parsing seluruh dokumen dan mengeksekusi dalam urutan yang benar. Jadi, apa pun yang Anda suka.
Saya pribadi suka gaya pertama:
Saya cenderung berpikir mundur. Berorientasi tujuan jika Anda mau. Jadi saya suka membaca, "kita sedang melakukan function bar, di hook. Oke keren, sekarang, apa fungsinya?"
Ini mengatur konteks untuk fungsi yang lebih baik. Tentu ini hanya preferensi pribadi saya. Jadi lakukan apa yang kamu suka.
sumber