Ao examinar os snippets / tutoriais / plugins do WordPress, muitas vezes vejo add_action()
e estou add_filter()
sendo colocado antes da declaração da função:
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;
}
Do ponto de vista lógico, isso simplesmente não faz sentido para mim. Por que você colocaria a função depois que ela é chamada no seu código? Geralmente é assim que eu lidaria com a mesma situação:
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' );
Sei que os dois cenários funcionam, mas há uma vantagem específica para um ou outro? Aproximadamente 90% do tempo, vejo o primeiro cenário sendo usado, o que me leva a acreditar que há um benefício nisso de alguma forma.
fonte
Na verdade, não há diferença real; por exemplo, prefiro seguir o primeiro cenário, porque é mais fácil fazer chamadas em um só lugar e definir funções abaixo disso. O PHP analisa todo o documento antes de executar qualquer coisa e, se as funções estiverem definidas corretamente, tudo funcionará normalmente, sem vantagem em nenhum dos cenários.
Eu acredito que o ditado certo aqui é: O que quer que seja o seu barco :)
fonte
call_user_func_array()
é (provavelmente) chamado após a definição da sua função durante a execuçãodo_action
. Assim, você pode definir a função conectada em qualquer lugar até esse ponto.Quatro anos depois, mas tenho certeza de que ajudará as pessoas a chegarem aqui da pesquisa.
Como outros já declararam, não há diferença, pois o php analisa todo o documento e é executado na ordem correta. Então, o que você quiser.
Eu pessoalmente gosto do primeiro estilo:
Eu costumo pensar para trás. Objetivo orientado se você quiser. Então, eu gosto de ler: "estamos fazendo barra de funções, no gancho. Ok, legal, agora, o que a função faz?"
Ele define o contexto para a função melhor. Claro que essa é apenas minha preferência pessoal. Então faça o que quiser.
fonte