Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/01/2013, 10:59
sagitariosTheBest
 
Fecha de Ingreso: diciembre-2005
Mensajes: 201
Antigüedad: 18 años, 4 meses
Puntos: 2
Pregunta Duda con pasar identificador de una clase a otra

Hola buenos días compañeros del foro quisiera exponer mi duda de “PHP OO”
Se puede definir una clase conexión (mysql) con el patrón singlenton, y al instanciar poder pasar el identificador de conexión a otro objeto que haga uso de conexión con mysql(clase ConsultaProducto también descrita mas abajo).

Clase conexión

Código PHP:
<?php
class Conexion{  
    
    
#Propiedades
    
private $user=" ";
    private 
$host=" ";
    private 
$pass=" ";
    private 
$database=" ";
    private 
$conn;        
              private static 
$instance#Instancia única de conexión
    
   #Metodo private constructor previene creación de objetos vía new
   
private function __construct()
    {
        if(!isset(
$this->conn)){
              
$this->conn = (mysql_connect($this->host,$this->user,$this->pass)) or die(mysql_error());
             
mysql_select_db($this->database,$this->conn) or die(mysql_error());             
        }
#fin de if(!isset($this->conn))
    
}#fin de constructor
    
   #El método con patron singleton
    
public static function getInstance()
    {
        if (!isset(
self::$instance)) {
            
$c __CLASS__;
            
self::$instance = new $c;
        }
#fin de if (!isset(self::$instance))
 
        
return self::$instance;
    }
#public static function singleton()
    
    #Clone no permitido
    #Este metodo se ejecuta cuando usamos el operador clone
    
public function __clone()
    {
        
trigger_error('Clone no se permite.'E_USER_ERROR);        
    }
#fin de metodo public function __clone()
    
    
private function __destruct(){
         
mysql_close($this->conn);
        }
#fin de __destruct()
    
}#fin de class Conexión
De esta manera hago la conexión a la base de datos.

Código PHP:
  $obj1 Conexion::getInstance(); 
Y después hago la instalcia de ConsultaProducto

Código PHP:
$obj2= new ConsultaProducto(); 
Pero como le paso el identificador de conexión a ConsultaProducto para que haga uso del identificador de conexión que ya se realizo con el $obj1 ?

Clase consulta producto

Código PHP:

class ConsultaProducto{
    private 
$sql;
    private 
$resource;    
    
    
#Metodo unicamente para obtenr el string del query
    
public function setQuery($sql){
        if(empty(
$sql)){
            return 
false;
        }
#fin del if
        
$this->sql $sql;
        return 
true;
    }
#fin metodo public function setQuery()    
    
    #ejecuta lo que pasaron al metodo setQuery lo cual fue pasado a la
    #propiedad privada sql
    
public function execute(){
        if(!(
$this->resource mysql_query($this->sql/*¿como paso el identificador?*/))){
            return 
null;
        }
#fin de if(!($this->resource = mysql_query($this->sql, /*¿como paso el identificador?*/)))
        
return $this->resource;
    }
#fin metodo public function execute()    
    
    
    
public function getRows(){
        if(!(
$result=$this->execute())){
                return 
null;
            }
            
$array=array();
            while(
$row=mysql_fetch_assoc($result)){
                
$array[]=$row;
            }
            return 
$array;            
    }
#fin del 
    
    
}#fin  class ConsultaProducto