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

4

C'est probablement plus 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;

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

Cette réponse sur le SO indique que la première méthode est plus rapide à traiter, tandis que la seconde méthode est plus rapide à écrire.

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

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

Merci

    
posée RRikesh 21.11.2012 - 08:24

1 réponse

5

Il n'y a pas de différence lorsque vous utilisez seulement 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 des raisons de lisibilité, utilisez toujours $GLOBALS['post'] . Il est plus facile de voir d'où vient la variable.

    
réponse donnée fuxia 21.11.2012 - 08:41

Lire d'autres questions sur les étiquettes