Usando global $ post v / s $ GLOBALS ['post']

4

Provavelmente é mais uma questão do PHP, mas eu gostaria de saber se há alguma diferença no uso

global $post;
echo $post->ID;

quando comparado a

echo $GLOBALS['post']->ID;

para acessar o ID de uma postagem no WordPress.

Esta resposta no SO sugere que o primeiro método é mais rápido de processar, enquanto o segundo método é mais rápido de escrever.

Eu também notei que o primeiro método é frequentemente mencionado no Codex, enquanto o segundo método é mencionado em the_content filter página.

Isso é apenas uma questão de preferência? Ou chega também ao desempenho e segurança?

Obrigado

    
por RRikesh 21.11.2012 / 08:24

1 resposta

5

Não há diferença quando você está usando apenas echo . O que funciona diferente é unset() :

function test_unset_1()
{
    global $post;
    unset( $post );
}
function test_unset_2()
{
    unset( $GLOBALS['post'] );
}

test_unset_1();
echo $GLOBALS['post']->ID; // will work

test_unset_2();
echo $GLOBALS['post']->ID; // will fail

O motivo é que unset() destrói apenas a referência local no primeiro caso e o objeto global real no segundo.

Para facilitar a leitura, use sempre $GLOBALS['post'] . É mais fácil ver de onde vem a variável.

    
por fuxia 21.11.2012 / 08:41