Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/12/2010, 09:35
ramonw
 
Fecha de Ingreso: junio-2009
Mensajes: 156
Antigüedad: 15 años, 6 meses
Puntos: 3
Conexion PDO con patron Registro

Buenas amigos, he leído en el foro que la conexion a la base de datos es mejor hacerla con el patron Registry que con Singleton.
Acabo de terminar una conexion que es con pdo y utiliza una clase que es un patron registro, que obviamente "registra" la conexion, para poder utilizarla posteriormente en cualquier otra clase, aqui les dejo las clases y me gustaría que me corrijieran a ver si está bien implementado el uso del patron, o está faltando algo (mas alla de que funcione lo que me interesa es el modelado en general y el uso del patron).

//clase que hace la conexion a pdo
Código PHP:
Ver original
  1. class conectarpdo{
  2.    
  3.  
  4.     private  $base;
  5.     private  $usuario;
  6.     private  $pass;
  7.  
  8.     function __construct(){
  9.  
  10.  
  11.         $this->base="mibase";
  12.         $this->usuario="miuser";
  13.         $this->pass="mipassword";
  14.  
  15.     }
  16.  
  17.     public function conectar(){
  18.  
  19.         $conectar=new PDO('mysql:host=localhost;dbname='.$this->base,$this->usuario,$this->pass);
  20.                  return $conectar;
  21.  
  22.     }
  23. }


// la interface del patron registry y su implementacion en la clase a utilizar
Código PHP:
Ver original
  1. interface patron_registro{
  2.  
  3. public function agregar();
  4. public function remover();
  5. public function obtener();
  6. public function existe();
  7.  
  8. }
  9.  
  10. class registro_conexion implements patron_registro {
  11.  
  12.     private $registro;
  13.  
  14.     public function  agregar() {
  15.        if(!isset($this->registro))
  16.        {
  17.  
  18.          $conn = new conectarpdo();
  19.          $valor_conexion = $conn->conectar();
  20.          $this->registro = $valor_conexion;
  21.        }
  22.     }
  23.  
  24.     public function  remover() {
  25.         if(!empty($this->registro))
  26.          {
  27.            unset($this->registro);
  28.          }
  29.     }
  30.  
  31.     public function  obtener() {
  32.  
  33.        if(!empty($this->registro))
  34.          {
  35.            return $this->registro;
  36.          }
  37.     }
  38.  
  39.  
  40.     public function  existe() {
  41.         if(!empty($this->registro))
  42.         {
  43.           return true;
  44.         }
  45.         else{
  46.           return false;
  47.         }
  48.    }
  49.  
  50.  
  51.  
  52. }

Su utilización:
Código PHP:
Ver original
  1. //dentro de un metodo de cualquier clase
  2.  
  3. $crearconn = new registro_conexion();
  4. $existe = $crearconn->existe();
  5.  
  6. if(TRUE == $existe){
  7.     $conectar = $crearconn->obtener();
  8. }
  9. else{
  10.     $crearconn->agregar();
  11.     $conectar = $crearconn->obtener();
  12. }
  13.  
  14. //en $conectar tengo una conexion PDO y puedo utilizarla por ej. para hacer un select.
  15. $consulta=$conectar->prepare('select * from paraobj where id =:id');
  16. $consulta->bindParam(':id',$this->dato);
  17.  
  18. $consulta->execute();
Bueno, el que pueda echar una miradita a ver si esta bien implementado esto le agradezco.