es algo de lo que deberías darte cuenta, si miras el constructor de tu clase
Código PHP:
Ver originalpublic function __construct()
{
$this->_dbh = new Apdater();
}
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 originalclass Adapter
{
private $_dbh;
private $_dns;
private $_username;
private $_passwd;
public function __construct() {
$this->_dns = "mysql:host=localhost;dbname=php";
$this->_username = "root";
$this->_passwd = "";
try {
$this->_dbh = new PDO($this->_dns, $this->_username, $this->_passwd);
$this->_dbh
->exec("SET CHARACTER SET utf8"); } catch (PDOException $e) {
echo "Error al conectar DB!: " . $e->getMessage() . "<br/>";
}
public function getDbh() {
return $this->_dbh;
}
}
y en tu clase User hacer esto
Código PHP:
Ver originalclass User {
private $_dbh;
public function __construct()
{
$adapter = new Apdater();
$this->_dbh = $adapter->getDbh();
}
public function get_all() {
$sql = "SELECT * from usuarios";
foreach ($this->_dbh->query($sql) as $rows) {
echo $rows['nombres']; // esto es solo para probar.
echo "<br/>";
}
}
y ahí si tu atributo dbh de la clase usuario sería la instancia de PDO, saludos