Foros del Web » Programando para Internet » PHP »

Duda: usando variable global en funciones

Estas en el tema de Duda: usando variable global en funciones en el foro de PHP en Foros del Web. ¡Hola de nuevo! He programado una clase que me permite manejar la base de datos, y me gustaría poder utilizar los metodos de la misma ...
  #1 (permalink)  
Antiguo 19/08/2010, 20:25
 
Fecha de Ingreso: julio-2010
Mensajes: 16
Antigüedad: 13 años, 9 meses
Puntos: 0
Duda: usando variable global en funciones

¡Hola de nuevo!

He programado una clase que me permite manejar la base de datos, y me gustaría poder utilizar los metodos de la misma en todo el script. Para ello, en la primera línea del index, incluyo el archivo que contiene la clase y creo el objeto.

Código PHP:
require_once('clase_db.php');
$db = new database(); 
La variable se declara fuera de toda función y, como es normal, para poder usar los métodos dentro de una, tendré que declarar global $db en todas y cada una de las funciones.

Código PHP:
function blah()*{
global 
$db;
// ahora sí :)

La pregunta puede parecer un poco tonta o sin sentido y seguramente la respuesta sea negativa, pero me gustaría saber si hay alguna forma de no tener que declarar global la variable $db en cada función.

Gracias a todos :)
  #2 (permalink)  
Antiguo 19/08/2010, 20:43
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Duda: usando variable global en funciones

como recomendación general: php patron singleton
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 20/08/2010, 08:22
 
Fecha de Ingreso: julio-2010
Mensajes: 16
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Duda: usando variable global en funciones

Cita:
Iniciado por pateketrueke Ver Mensaje
como recomendación general: php patron singleton
Verdaderamente útil el patrón singleton. Ya lo tengo implementado en mi clase, muchas gracias.

En cuanto a mi duda, no queda más remedio que declarar global la variable en cada función. ¿Verdad?

Con el singleton se podría declarar en cada función "$db = database::getInstance();" y no se crearía un nuevo objeto, pero aún con todo veo más cómodo crear el objeto en el index y declarar global $db en cada función. ¿No? ¿Tendría alguna limitación hacerlo así?

Cada día se aprenden cosas nuevas ¡Muchas gracias!
  #4 (permalink)  
Antiguo 20/08/2010, 08:59
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Duda: usando variable global en funciones

mira... definitivamente el singleton te ahorra del pensamiento de usar globales... ¿porque?

pues precisamente siempre vas a obtener la misma instancia siempre, ese es el objetivo de dicho patrón.... entonces, declarar la variable fuera de las funciones usando singleton, y luego usar global para accesar a ella desde otro contexto pierde sentido... y en todo caso fue en vano implementar el singleton...

lo único que debes saber es que usar globales no es seguro, imagina que en algún punto del script haces unset() de tu variable global $db ¡pues dejaría de funcionar todo!!

bueno, el punto es que deberías acostumbrarte al uso de patrones....
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 20/08/2010, 09:10
 
Fecha de Ingreso: julio-2010
Mensajes: 16
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Duda: usando variable global en funciones

Cita:
Iniciado por pateketrueke Ver Mensaje
mira... definitivamente el singleton te ahorra del pensamiento de usar globales... ¿porque?

pues precisamente siempre vas a obtener la misma instancia siempre, ese es el objetivo de dicho patrón.... entonces, declarar la variable fuera de las funciones usando singleton, y luego usar global para accesar a ella desde otro contexto pierde sentido... y en todo caso fue en vano implementar el singleton...

lo único que debes saber es que usar globales no es seguro, imagina que en algún punto del script haces unset() de tu variable global $db ¡pues dejaría de funcionar todo!!

bueno, el punto es que deberías acostumbrarte al uso de patrones....
Toda la razón, muchas gracias por los consejos y la ayuda.

Etiquetas: funciones, global, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:52.