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

Bueno he hecho las correcciones, ademas lo he problado y funciona perfectamente.
Código PHP:
Ver original
  1. //clase que hace la conexion
  2.  
  3. class conectarpdo{
  4.  
  5.  
  6.     private  $base;
  7.     private  $usuario;
  8.     private  $pass;
  9.  
  10.     function __construct(){
  11.  
  12.  
  13.         $this->base="mibase";
  14.         $this->usuario="myuserl";
  15.         $this->pass="mypassword";
  16.  
  17.     }
  18.  
  19.     public function conectar(){
  20.  
  21.         $conectar=new PDO('mysql:host=localhost;dbname='.$this->base,$this->usuario,$this->pass);
  22.                  return $conectar;
  23.  
  24.     }
  25. }

La clase Registry con algun cambio en el metodo has (me gusta mas asi)
Código PHP:
Ver original
  1. class Registry {
  2.     private  $_cache;
  3.  
  4.     public function __construct() {
  5.         $this->_cache = array();
  6.     }
  7.     public function set($key, $item) {
  8.         $this->_cache[$key] = $item;
  9.     }
  10.     public function get($key) {
  11.         return $this->_cache[$key];
  12.     }
  13.     public function has($key) {
  14.         if(!empty($this->_cache[$key]))
  15.         {
  16.           return true;
  17.         }
  18.         else{
  19.           return false;
  20.         }
  21.     }
  22. }

Asi es su uso:
Código PHP:
Ver original
  1. $uno = new conectarpdo();
  2. $conexion = $uno->conectar();
  3.  
  4.  
  5. $Registry = new Registry();
  6. if (!$Registry->has('conexion')) {
  7.       $Registry->set('conexion', $conexion);
  8. }
  9. // Mas adelante
  10. $conexion = $Registry->get('conexion');
  11.  
  12. $datito = 27;
  13. //en $conexion tengo una conexion PDO y puedo utilizarla por ej. para hacer un select.
  14. $consulta=$conexion->prepare('select * from administradores where id =:id');
  15. $consulta->bindParam(':id',$datito);
  16.  
  17. $consulta->execute();
  18. while($fila=$consulta->fetch()){
  19.  
  20. etc. etc.
  21.  
  22. //en la misma pagina otra
  23. $lamismaconexion = $Registry->get('conexion');
  24.  
  25.  
  26. //en $lamismaconexion tengo ahora la conexion PDO y puedo utilizarla por ej. para hacer otro select.
  27.  
  28. $consulta=$lamismaconexion->prepare( etc. etc.
Bueno asi ha quedado, si ven algo a corregir por favor avisar.
Saludos.