Skip to content

Instantly share code, notes, and snippets.

@John-Henrique
Created December 29, 2016 18:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save John-Henrique/c8afb84fc20aeb39f14ec5a34a8143d8 to your computer and use it in GitHub Desktop.
Save John-Henrique/c8afb84fc20aeb39f14ec5a34a8143d8 to your computer and use it in GitHub Desktop.
Exemplo de abstração de dados usando OOP
<?php
class Db {
public $usuario = 'root';
public $senha = '';
public $base = '';
public $servidor = 'localhost';
/**
* Armazena a instância da conexão
*/
protected $conexao = false;
/**
* Método mágico, permite chamar outros métodos ou definir valores
* automaticamente
**/
protected function __construct(){
/**
* Sempre que a classe for invocada a conexão será iniciada
* deixando disponivel o objeto da conexão em $this->conexao
*/
$this->conexao();
}
// Define o valor para usuário, desta forma pode-se defini-lo fora da classe.
public function setUsuario( $usuario ){
$this->usuario = $usuario;
}
/**
* Basta seguir o mesmo para os demais
* public function setSenha(){}
* public function setServidor(){}
* public function setBase(){}
*
**/
/**
* Este método só poderá ser chamado dentro
* da classe, nunca fora dela
**/
protected function conexao(){
$this->conexao = mysql_connect( $this->servidor, $this->usuario, $this->senha, $this->base );
// verificando se existe conexão
if( mysqli_connect_errno() ) {
printf("Falha na conexão: %s\n", mysqli_connect_error() );
exit();
}
}
protected function consulta( $str_sql ){
// realiza a consulta e retorna o resultado
$obj_sql = mysql_query( $this->conexao, $sql );
// é importante fechar a conexão
mysqli_close( $this->conexao );
return $obj_sql;
}
/**
* Imagine $filtro como sendo um meio de passar valores extras como
* 'AND limit = 5'
* ou
* array(
* 'limit' => 5
* )
**/
public function lista_clientes( $filtro ){
$sql = "SELECT * FROM clientes WHERE mesAniversario = 5 ". $filtro ;
return $this->consulta( $sql );
}
}
/**
* Para usar basta num arquivo qualquer (meu_config.php)
* definir os dados da conexão.
**/
$db = new Db();
$db->usuario = "john";
$db->senha = "henrique";
$db->servidor = "mysql.johnhenrique.com.br";
$db->base = "web";
/**
*
* Agora resta apenas incluir este arquivo no documento principal
* Exemplo
* Na página index.php você faz um include
* Db.class.php
* meu_config.php
*
* Agora basta usar os métodos
**/
$clientes = $db->lista_clientes();
print_r( $clientes );
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment