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
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.