Foros del Web » Programando para Internet » PHP »

PHP OO objeto dentro de funcion

Estas en el tema de objeto dentro de funcion en el foro de PHP en Foros del Web. SALUDO PARA TODOS, En estos momentos tengo un inconveniente, lo que pasa es q tengo una clase declarada, que es donde tengo la conexion a ...
  #1 (permalink)  
Antiguo 06/12/2011, 08:34
Yoi
 
Fecha de Ingreso: noviembre-2008
Mensajes: 144
Antigüedad: 15 años, 5 meses
Puntos: 2
objeto dentro de funcion

SALUDO PARA TODOS,

En estos momentos tengo un inconveniente, lo que pasa es q tengo una clase declarada, que es donde tengo la conexion a la base de datos y la que me genera las consultas y demas, esta clase la incluyo en todo lugar, pero tengo un inconveniente, tengo un script con muchas funciones, pero que no estan en una clase, son solo funciones, algunas de ellas requieren de ejecucion de scripts a base de datos, al inicio del archivo incluyo la clase, luego instancio el objeto, pero cuando quiero acceder a al objeto dentro de la clase se daña, no me da, alguien me puede colaborar con ello? o si es declarando el objeto dentro de cada funcion, pero no se de que manera hacerlo, espero haberme hecho explicar bn, y me colaboren, muchas gracias.
  #2 (permalink)  
Antiguo 06/12/2011, 08:35
Avatar de CesarHC  
Fecha de Ingreso: junio-2011
Ubicación: localhost
Mensajes: 566
Antigüedad: 12 años, 10 meses
Puntos: 56
Respuesta: objeto dentro de funcion

Claro que te ayudaremos pero podrias poner un codigo que aqui no hay clarividentes XD(o si ?).
__________________
Solo la práctica no te traicionara ¡¡¡¡¡¡

Seguir el camino tu debes PHP The Right Way.
  #3 (permalink)  
Antiguo 06/12/2011, 08:46
Yoi
 
Fecha de Ingreso: noviembre-2008
Mensajes: 144
Antigüedad: 15 años, 5 meses
Puntos: 2
Respuesta: objeto dentro de funcion

JAJA OK.
POR EJEMPLO TENGO LO SIGUIENTE:
Código PHP:
Ver original
  1. require_once("Conn/clase_conectar.php");
  2. $MyObj = new MyClase;
  3. function consulta_bd()
  4. {
  5.     $sql = "INSERT INTO tabla(valor_1, valor_2) values  ('a','b')";
  6.     $res = $MyObj->Query($sql);
  7. }

aqui el objeto no me corre, me sale error, que debo hacer, o q hago mal?
  #4 (permalink)  
Antiguo 06/12/2011, 08:51
Avatar de CesarHC  
Fecha de Ingreso: junio-2011
Ubicación: localhost
Mensajes: 566
Antigüedad: 12 años, 10 meses
Puntos: 56
Respuesta: objeto dentro de funcion

Puedes poner tambien la clase conectar?
__________________
Solo la práctica no te traicionara ¡¡¡¡¡¡

Seguir el camino tu debes PHP The Right Way.
  #5 (permalink)  
Antiguo 06/12/2011, 08:55
Yoi
 
Fecha de Ingreso: noviembre-2008
Mensajes: 144
Antigüedad: 15 años, 5 meses
Puntos: 2
Respuesta: objeto dentro de funcion

estas es la clase conectar:

Código PHP:
Ver original
  1. class MySQL{  
  2.     private $conexion;  
  3.  
  4.     private $error;
  5.    
  6.    
  7.    
  8.      public function MySQL(){  
  9.           if(!isset($this->conexion)){  
  10.           $this->conexion = (mysql_connect($this->hostname_connection,$this->username_connection,$this->password_connection)) or die(mysql_error());  
  11.           mysql_select_db($this->database_connection,$this->conexion) or die(mysql_error());  
  12.           }  
  13.       }  
  14.       public function Query($consulta){        
  15.           $resultado = mysql_query($consulta,$this->conexion) or die ( $this->error =mysql_error());  
  16.       return $resultado;  
  17.      }  
  18.      public function fetch_array($consulta){  
  19.         return mysql_fetch_array($consulta);    
  20.      }
  21.  
  22.  
  23.  
  24. }
  #6 (permalink)  
Antiguo 06/12/2011, 09:04
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: objeto dentro de funcion

El problema es el contexto, las funciones no pueden acceder a variables fuera de su propio contexto.

Lo único que podría solucionarlo es usar Singleton, Registry, globals o algo similar que te ayude a acceder a tu objeto desde cualquier punto de tus scripts.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 06/12/2011, 09:06
Yoi
 
Fecha de Ingreso: noviembre-2008
Mensajes: 144
Antigüedad: 15 años, 5 meses
Puntos: 2
Respuesta: objeto dentro de funcion

Estuve mirando y queria declarar el objeto como global, eso no es posible?
  #8 (permalink)  
Antiguo 06/12/2011, 09:12
Avatar de CesarHC  
Fecha de Ingreso: junio-2011
Ubicación: localhost
Mensajes: 566
Antigüedad: 12 años, 10 meses
Puntos: 56
Respuesta: objeto dentro de funcion

Por lo que dice pateketrueke lo mas recomendable es poner esa funcion en la clase para no hacerte problemas o entendi mal?.
__________________
Solo la práctica no te traicionara ¡¡¡¡¡¡

Seguir el camino tu debes PHP The Right Way.
  #9 (permalink)  
Antiguo 06/12/2011, 09:15
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 11 meses
Puntos: 394
Respuesta: objeto dentro de funcion

Código PHP:
Ver original
  1. function consulta_bd()
  2. {
  3.     $MyObj = new MyClase;
  4.     $sql = "INSERT INTO tabla(valor_1, valor_2) values  ('a','b')";
  5.     $res = $MyObj->Query($sql);
  6. }

O como dice pateketrueke deberás usar SINGLETON el problema es que NO ES RECOMENDABLE usar singleton en las clases DB :)
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #10 (permalink)  
Antiguo 06/12/2011, 09:31
Yoi
 
Fecha de Ingreso: noviembre-2008
Mensajes: 144
Antigüedad: 15 años, 5 meses
Puntos: 2
Respuesta: objeto dentro de funcion

Ps eso es lo que no quiero, poner todas esas funciones en la clase conectar, o me toca crear una clase para todas esas funciones...
  #11 (permalink)  
Antiguo 06/12/2011, 09:50
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: objeto dentro de funcion

Hay muchas formas que te permiten instanciar una sola vez tu objeto y leerlo desde donde desees, por favor investiga acerca de los términos que mencionaba en mi mensaje anterior.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: funcion, objeto
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:15.