Ver Mensaje Individual
  #4 (permalink)  
Antiguo 17/06/2012, 14:58
Avatar de carlos_belisario
carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: Como crear metodo conexion pdo

es algo de lo que deberías darte cuenta, si miras el constructor de tu clase
Código PHP:
Ver original
  1. public function __construct()
  2.       {  
  3.           $this->_dbh = new Apdater();
  4.       }
le estas diciendo que $this->_dbh va a ser un objeto de tipo adapter, este objeto lo único que tiene de PDO es un atributo llamado _dbh que representa al objeto PDO como tal, entonces, si te das cuenta lo que te coloco el amigo pateketrueke es que accedas al atributo $_dbh de la clase Adapter para que puedas acceder al objeto PDO, de hecho como es pribado no pedes acceder directamente a el entonces pudieras hacer algo como esto

Código PHP:
Ver original
  1. class Adapter
  2. {
  3.       private $_dbh;
  4.       private $_dns;
  5.       private $_username;
  6.       private $_passwd;
  7.    
  8.       public function __construct() {
  9.  
  10.         $this->_dns = "mysql:host=localhost;dbname=php";
  11.         $this->_username = "root";
  12.         $this->_passwd = "";
  13.         try {
  14.             $this->_dbh = new PDO($this->_dns, $this->_username, $this->_passwd);
  15.             $this->_dbh->exec("SET CHARACTER SET utf8");
  16.         } catch (PDOException $e) {
  17.             echo "Error al conectar DB!: " . $e->getMessage() . "<br/>";
  18.             die();
  19.         }
  20.     public function getDbh() {
  21.         return $this->_dbh;
  22.     }
  23.       }
y en tu clase User hacer esto
Código PHP:
Ver original
  1. class User {
  2.  
  3.        private $_dbh;
  4.        public function __construct()
  5.       {  
  6.           $adapter = new Apdater();
  7.           $this->_dbh = $adapter->getDbh();
  8.          
  9.       }
  10.  
  11.         public function get_all() {
  12.        
  13.         $sql = "SELECT * from usuarios";
  14.         foreach ($this->_dbh->query($sql) as $rows) {
  15.              
  16.            echo $rows['nombres'];  // esto es solo para probar.        
  17.           echo "<br/>";
  18.         }
  19.     }
y ahí si tu atributo dbh de la clase usuario sería la instancia de PDO, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way