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

4

Probablemente sea más una pregunta de PHP, pero me gustaría saber si hay alguna diferencia en el uso

global $post;
echo $post->ID;

en comparación con

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

para acceder a la ID de una publicación en WordPress.

Esta respuesta en SO sugiere que el primer método es más rápido de procesar, mientras que el segundo método es más rápido de escribir.

También noté que el primer método se menciona a menudo en el Codex, mientras que el segundo método se menciona en the_content filter página.

¿Es esto solo una cuestión de preferencia? ¿O también se trata de rendimiento y seguridad?

Gracias

    
pregunta RRikesh 21.11.2012 - 08:24

1 respuesta

5

No hay diferencia cuando estás usando solo echo . Lo que funciona diferente es 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

El motivo es que unset() destruye solo la referencia local en el primer caso y el objeto global real en el segundo.

Para facilitar la lectura, utilice siempre $GLOBALS['post'] . Es más fácil ver de dónde viene la variable.

    
respondido por el fuxia 21.11.2012 - 08:41

Lea otras preguntas en las etiquetas