Przeglądając fragmenty / samouczki / wtyczki WordPress często widzę add_action()
i add_filter()
umieszczam je przed zadeklarowaniem funkcji:
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;
}
Z logicznego punktu widzenia nie ma to dla mnie sensu. Dlaczego miałbyś umieszczać funkcję po jej wywołaniu w kodzie? Tak zazwyczaj radziłbym sobie z tą samą sytuacją:
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' );
Wiem, że oba scenariusze działają, ale czy jest jakaś konkretna zaleta dla jednego lub drugiego? Około 90% czasu widzę, że pierwszy scenariusz jest używany, więc to prowadzi mnie do przekonania, że jest to w jakiś sposób korzystne.
źródło
Tak naprawdę nie ma żadnej różnicy, na przykład wolę podążać za pierwszym scenariuszem, ponieważ fajniej jest umieszczać wywołania w jednym miejscu i definiować funkcje poniżej. PHP analizuje cały dokument przed uruchomieniem czegokolwiek, a jeśli funkcje są poprawnie zdefiniowane, wszystko będzie działać normalnie, bez żadnej korzyści w żadnym ze scenariuszy.
Uważam, że słuszne powiedzenie brzmi: Cokolwiek płynie łodzią :)
źródło
call_user_func_array()
(najprawdopodobniej) jest wywoływany po definicji funkcji podczas działaniado_action
. Możesz więc zdefiniować funkcję zaczepioną gdziekolwiek do tego momentu.4 lata później, ale jestem pewien, że to pomoże ludziom dotrzeć tutaj z wyszukiwania.
Jak powiedzieli inni, nie ma różnicy, ponieważ php analizuje cały dokument i wykonuje w prawidłowej kolejności. Więc cokolwiek chcesz.
Osobiście lubię pierwszy styl:
Mam tendencję do myślenia wstecz. Zorientowany na cel, jeśli chcesz. Więc lubię czytać: „Robimy pasek funkcji, na haczyku. Okej, fajnie, co teraz robi funkcja?”
Lepiej konfiguruje kontekst dla funkcji. Oczywiście to tylko moje osobiste preferencje. Rób więc to, co lubisz.
źródło