Your connection class is a bit confusing, I do not think there is a need to extend it to the PDO class because PDO is a native php class, so there is no need for the static prepare () function. try to make your class simpler perhaps;
class BD{
/**
* [$pdo será objeto com a conexão]
* @var [obj]
*/
private static $pdo;
/**
* [$host Host]
* @var string
*/
private static $host = 'seu_host';
/**
* [$name nome do banco]
* @var string
*/
private static $name = 'seu_banco';
/**
* [$charset charset utilizado no banco]
* @var string
*/
private static $charset = 'utf8';
/**
* [$user usuário do banco]
* @var string
*/
private static $user = 'usuario_do_banco';
/**
* [$passwd senha do banco]
* @var string
*/
private static $passwd = 'senha_do_usuario_do_banco';
/**
* [__construct Construtor da classe]
*/
private function __construct(){}
/**
* [getInstance Verifica se existe uma instância da conexão, caso nao exista retorna uma nova.]
* @return [obj] [retorna objeto da conexão]
*/
public static function getInstance() {
if (!isset(self::$pdo)):
try {
$opcoes = array();
self::$pdo = new \PDO("mysql:host=" .self::$host. "; dbname=" . self::$name . "; charset=" . self::$charset . ";", self::$user, self::$passwd, $opcoes);
self::$pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
print "Erro com a conexão: " . $e->getMessage();
}
endif;
return self::$pdo;
}
}
In your class casas.php you can create a private object called $ pdo to be instantiated in the class constructor, making it available as the connection object for all its functions in the class.
require 'db.php';
protected $table = 'casas';
private $nomeCasa;
private $pessoaContatoCasa;
private $telefoneCasa;
private $emailCasa;
private $enderecoCasa;
private $pdo; // Será nossa conexão na classe
function __construct()
{
$this->pdo = BD::getInstance();// instancia conexão
}
public function setNomeCasa($nomeCasa){
$this->nomeCasa= $nomeCasa;
}
public function setPessoaContatoCasa($pessoaContatoCasa){
$this->pessoaContatoCasa = $pessoaContatoCasa;
}
public function setTelefoneCasa($telefoneCasa){
$this->telefoneCasa= $telefoneCasa;
}
public function setEmailCasa($emailCasa){
$this->emailCasa= $emailCasa;
}
public function setEnderecoCasa($enderecoCasa){
$this->enderecoCasa= $enderecoCasa;
}
public function insert(){
$sql = "INSERT INTO {$this->table} (nomeCasa, pessoaContatoCasa, telefoneCasa, emailCasa, enderecoCasa) VALUES (:nomeCasa, :pessoaContatoCasa, :telefoneCasa, :emailCasa, :enderecoCasa)";
$stmt = $this->pdo->prepare($sql);
$stmt->bindParam(':nomeCasa', $this->nomeCasa);
$stmt->bindParam(':pessoaContatoCasa', $this->pessoaContatoCasa);
$stmt->bindParam(':telefoneCasa', $this->telefoneCasa);
$stmt->bindParam(':emailCasa', $this->emailCasa);
$stmt->bindParam(':enderecoCasa', $this->enderecoCasa);
return $stmt->execute();
}