Ver Mensaje Individual
  #3 (permalink)  
Antiguo 17/06/2012, 06:07
davidpv92
 
Fecha de Ingreso: diciembre-2007
Mensajes: 14
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Problema con POO, objeto por referencia

Cita:
Creo que lo que estas haciendo no es del todo correcto, no se si sepas pero PHP no puede serializar todo, en concreto, tu clase MySQL al serializarla no estas ganando nada ya que la conexión como tal se cierra, aunque la serializes, es un tipo de dato recurso que PHP va a cerrar.

Sí deseas continuar con lo que haces, lo mejor es que uses los métodos que tiene PHP __sleep y __wakeup para guardar y volver a "levantar" el objeto para que este listo.
Gracias de antemano GastorV, te cuento.

La llamadas mágicas __sleep and __wakeup entan definidas en la clase MySQL que actualmente no esta posteado en el hilo, de todas formas es algo que aun esta sin probar, ya que la idea de serializar los objetos es conseguir acceso a ellos de forma fácil incluso desde un recurso ajax y aun no he podido verificar nada. De todas formas coloco el código y lo comento por si hubiera algún error o algún fallo de entendimiento por mi parte.

La funcion _SLEEP no la utilio, ya que lo serializo nada mas crearla y toque lo que toque desde sleep me cargo algo jeje...

_wakeup() la utilizo para reanimar la conecxión. Ya que entiendo que serialize almacena en el string valores almacenabes, pero intutia que la conecxión probablemente me fuera a dar problemas, asique ya añadi este metodo magico en la declaración de mi clase.

Te dejo el código
Código PHP:
<?php 

class MySQL{

    
//General

    
public  $Ready false;

   protected 
$conexion

    private 
$total_consultas;

    

    
//Config

    
private $servidor '***';

    private 
$usuario '***';

    private 
$contrasena '***';

    private 
$nombrebd '***';

    

  

      public function 
__construct(){

        if(!isset(
$this->conexion)){

            
$this->Ready $this->conectar();

        }

      }



    private function 
conectar(){

        
$this->conexion = (mysql_connect($this->servidor,$this->usuario,$this->contrasena))                

        or die(
mysql_error());

      if (
mysql_select_db($this->nombrebd,$this->conexion))

      {return 
true;} else {return false;}

    }

    

    public function 
__wakeup()

   { 

            
$this->Ready $this->conectar();

   }



      public function 
consulta($consulta){ 

        
$this->total_consultas++; 

        
$resultado mysql_query($consulta,$this->conexion);

        if(!
$resultado){ 

              echo 
'MySQL Error: ' mysql_error();

              exit;

        }

        return 
$resultado;

      }
.
.
.
}

Pero el problema esta en que no puedo referenciar $user->MySQL con el objeto global mysql.


Agradecería cualquier rayo de luz. Un abrazo

Última edición por davidpv92; 17/06/2012 a las 06:30