Creo que se ha discutido bastante sobre el asunto de las variables globales.
Por ejemplo hay estas preguntas y otras más sobre el tema:
Pero a mí todavía no me queda claro del todo el ámbito de una variable global... y el ciclo de vida mucho menos.
Dado un script cualquiera, tengo varias funciones dentro de él.
Esto es lo que he entendido (aunque no acepto que sea así). Si dentro de las funciones yo quiero usar un objeto de conexión a la base de datos.
(A) Lo que entiendo
$objPDO=new DbPDO();
function unaFuncion(){
/*
*Aquí $objPDO es nulo, este no es su ámbito.
*/
}
function otraFuncion($objPDO){
/*
*Aquí $objPDO es recibido en parámetro y funciona.
*Eso se entiende
*/
}
(B) Lo que no entiendo
Si yo quiero evitar tener que pasar mi objeto en parámetro, e intento esto:
global $objPDO;
$objPDO=new DbPDO();
function unaFuncion(){
/*
*Aquí, pensando que $objPDO es global
*intento usarlo, pero me dice que es nulo
*/
}
function otraFuncion($objPDO){
/*
*Aquí $objPDO es recibido en parámetro.
*y funciona siendo global o no
*/
}
Pregunta
¿Por qué en la parte (B), si he declarado la variable como global no la reconoce como tal si intento usarla en
unaFuncion()
?El error que me da es:
Uncaught Error: Call to a member function on null
- ¿Si la variable se queda declarada como
global
, seguirá existiendo cuando el script donde la declaré haya terminado?