Ver Mensaje Individual
  #44 (permalink)  
Antiguo 02/09/2010, 11:49
Avatar de neodani
neodani
 
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 8 meses
Puntos: 20
Respuesta: Duda con PDO y mi clase

Cita:
Iniciado por GatorV Ver Mensaje
Exacto ahora sí, te digo sería mucho mejor para ti y para que aprendas más que leas un libro de PHP, así puedes entender como funciona la sintaxis y como crear funciones y declarar los valores.

Saludos.
Entonces no hace falta que utilice el método Conectar() dentro de la clase no?

Código PHP:
Ver original
  1. private function Conectar(){
  2.         try {
  3.             $this->_conexion = new PDO("mysql:host=$this->_host;dbname=$this->_db", $this->_username, $this->_password);
  4.             // echo a message saying we have connected
  5.             echo 'Connected to database';
  6.         }
  7.         catch(PDOException $e){
  8.             echo $e->getMessage();
  9.         }
  10.         return $this->_conexion;
  11.     }

Con esto sería suficiente no?

<?php

Código PHP:
Ver original
  1. class DB extends PDO {
  2.     private $_username;
  3.     private $_password;
  4.     private $_host;
  5.     private $_db;
  6.     private $_conexion;
  7.     private $_dsn;
  8.  
  9.     public function __construct(Config $config)
  10.     {
  11.         $config_data = $config->getConfig();
  12.         $this->_username = $config_data['username'];
  13.         $this->_password = $config_data['password'];
  14.         $this->_host = $config_data['host'];
  15.         $this->_db = $config_data['db'];
  16.         $this->_dsn="mysql:host=$this->_host;dbname=$this->_db";
  17.        
  18.         try {
  19.             parent::__construct($this->_dsn, $this->_username, $this->_password);
  20.             // echo a message saying we have connected
  21.             //echo 'Connected to database';
  22.         }
  23.         catch(PDOException $e){
  24.             echo $e->getMessage();
  25.             exit;
  26.         }
  27.        
  28.     }
  29. }
  30.  
  31. ?>



ejemplo1.php

Código PHP:
Ver original
  1. <?php
  2.  
  3. require('config_reader.php');
  4. require('db.php');
  5. require('registry.php');
  6.  
  7. class Categoria{
  8.     private $nombreCategoria;
  9.    
  10.     // Listar todas las categorias de la base de datos
  11.     public function listarCategorias($db){
  12.         $query = "SELECT nombre FROM categorias";
  13.         $comando = $db->prepare($query);
  14.         $comando->execute();
  15.  
  16.         while( $datos = $comando->fetch() ) {
  17.         // Imprimimos resultados
  18.         echo $datos[0].'<br />';
  19.         }
  20.     }
  21.    
  22.     // Listar todas los partidos de la base de datos
  23.     public function listarPartidos($db){
  24.         $query = "SELECT home FROM partidos";
  25.         $comando = $db->prepare($query);
  26.         $comando->execute();
  27.  
  28.         while( $datos = $comando->fetch() ) {
  29.         // Imprimimos resultados
  30.         echo $datos[0].'<br />';
  31.         }
  32.     }
  33.    
  34. }
  35.  
  36. //Cargo los datos del fichero .ini
  37. $config_slave = new Config('params_slave.ini');
  38. $config_master = new Config('params_master.ini');
  39.  
  40. //Creo el objeto de la base de datos
  41. $db_slave = new db($config_slave);
  42. $db_master = new db($config_master);
  43.  
  44. //Guardo las instancias diferentes con Registry
  45. Registry::save('db_slave', $db_slave);
  46. Registry::save('db_master', $db_master);
  47.  
  48. //Recupero las instancias con Registry
  49. $db_slave=Registry::get('db_slave');
  50. $db_master=Registry::get('db_master');
  51.  
  52. $cat= new Categoria();
  53. $cat->listarCategorias($db_slave); // Leo de la BBDD slave
  54. $cat->listarPartidos($db_master); // Ejemplo leyendo de otra BBDD master
  55.  
  56. ?>