web-dev-qa-db-fra.com

Utilisation de la variable $ post v/s $ GLOBALS ['post']

C’est probablement plus d’une question PHP, mais j’aimerais savoir s’il existe des différences d’utilisation

global $post;
echo $post->ID;

par rapport à

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

accéder à l'ID d'une publication dans WordPress.

Cette answer on SO suggère que la première méthode est plus rapide à traiter, tandis que la seconde méthode est plus rapide à écrire.

J'ai aussi remarqué que la première méthode est souvent mentionnée dans le Codex, tandis que la seconde est mentionnée dans the_content filter page.

Est-ce seulement une question de préférence? Ou est-ce que cela concerne aussi la performance et la sécurité?

Merci

4
RRikesh

Il n'y a pas de différence lorsque vous utilisez uniquement echo. Ce qui fonctionne différemment est 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

La raison en est que unset() détruit uniquement la référence locale dans le premier cas et l'objet global réel dans le second.

Pour plus de lisibilité, utilisez toujours $GLOBALS['post']. Il est plus facile de voir d'où vient la variable.

5
fuxia