PHP sem POG a moda agora é OO

Posted: 21st outubro 2011 by Carlos Lorenzon in Mysql, PHP, Programação

Olá pessoal, recentemente comecei a estudar JAVA e vou dizer que este curso esta me ajudando muito!! Tanto em relação ao próprio JAVA quanto ao PHP.

Digo isso por quê estou mudando a visão estrutural que tinha para OO, e recentemente tem tomado mais cuidado na hora de escrever as classes, tomando principalmente cuidado com os padrões.

Alguns padrões que sigo:
Variáveis em minúsculas, caso sejam compostas a primeira letra da composição em maiúsculo.
Constantes em maiúsculas e caso seja composta separadas por underline “_”
As classes com nomes sugestivos e com a primeira letra em maiúscula e no singular (Ex: Cliente ).

Entre outros cuidados.

Mas vamos ao exemplo de uma classe MySQL (esta ainda tenho de revisar), uma chamada Cliente, um arquivo aonde fica as constantes do banco de dados (senha, usuario, banco e host) e o arquivo index.php que irá executar.

Bom a classe MySQL ficou desta forma.

  1. <?php
  2.  
  3. class MySQL {
  4.     var $dbi;
  5.     var $query;
  6.  
  7.     // função que starta o MySql, sem ela é impossivel conectar ao banco
  8.     function open()
  9.     {
  10.         // conecta com o bd com as variáveis prédefinidas
  11.         $this->dbi = mysql_connect(DB_HOST, DB_USERNAME, DB_PASSWORD);
  12.         if (!$this->dbi) {
  13.             echo "Erro na conexão!";
  14.         }
  15.         if (!mysql_select_db(DB_DATABASE)) {
  16.             echo "Erro na seleção do banco de dados!";
  17.         }
  18.     }
  19.  
  20.     // faz a query
  21.     function query($query)
  22.     {
  23.  
  24.     $queryBD = mysql_query($query);
  25.     $dados = mysql_fetch_array($queryBD);
  26.  
  27.     return $dados;
  28.  
  29.     }
  30.  
  31.     // fecha a conexão com o bco de dados
  32.     function close()
  33.     {
  34.         mysql_close($this->dbi);
  35.     }
  36.  
  37. }
  38. ?>

Com isto já temos o suficiente para conectar ao banco, agora vamos ver a classe Cliente

  1. <?php
  2. /* 
  3.  * 
  4.  * Classe responsavel por cadastrar, editar, consultar e deletar clientes
  5.  *
  6.  */
  7.  
  8.  
  9. class Cliente {
  10.     private $id;
  11.     private $nome;
  12.     private $email;
  13.     private $senha;
  14.     private $cpf;
  15.  
  16.  
  17.     function  __construct($id=0, $nome="", $email="", $senha="", $cpf=0) {
  18.         $this->id = $id;
  19.         $this->nome = $nome;
  20.         $this->email = $email;
  21.         $this->senha = $senha;
  22.         $this->cpf = $cpf;
  23.     }
  24.  
  25.  
  26.     public function getId(){
  27.         return $this->id;
  28.     }
  29.  
  30.     public function getNome(){
  31.         return $this->nome;
  32.     }
  33.  
  34.     public function getEmail(){
  35.         return $this->email;
  36.     }
  37.  
  38.     public function getSenha(){
  39.         return $this->senha;
  40.     }
  41.  
  42.     public function getCpf(){
  43.         return $this->cpf;
  44.     }
  45.  
  46.     public function getById($id){
  47.         $db = new MySQL();
  48.         $db->open();
  49.  
  50.         $cliente = $db->query("SELECT * FROM cliente WHERE id = $id and 1 = 1");
  51.  
  52.         $db->close();
  53.  
  54.         return new Cliente($cliente['id'], $cliente['nome'], $cliente['email'], $cliente['senha'], $cliente['cpf']);
  55.  
  56.     }
  57.  
  58.     public function getByNome($nome){
  59.         $db = new MySQL();
  60.         $db->open();
  61.  
  62.         $busca = strtoupper($nome);
  63.         $cliente = $db->query("SELECT * FROM cliente WHERE UPPER(nome) = '$busca' and 1 = 1");
  64.  
  65.         $db->close();
  66.  
  67.         return new Cliente($cliente['id'], $cliente['nome'], $cliente['email'], $cliente['senha'], $cliente['cpf']);
  68.  
  69.     }
  70. }
  71. ?>

Agora vamos juntar as duas classes, vamos supor que no banco de dados na tabela cliente tivesse os seguintes dados com o id “1″.

Nome: Carlos Lorenzon
Email: carlos[]nextd.com.br

Usando a classe cliente pegaríamos desta forma os dados

  1. <?php
  2. include 'conf.php'; // Aonde esta as constantes do banco e outras definições
  3. include 'class/MySQL.php'; // Acesso ao banco de dados
  4. include 'class/Cliente.php'; // Classe responsavel por administrar as informações dos clientes
  5.  
  6. $cliente = new Cliente();
  7.  
  8. $cliente = $cliente->getById(1);
  9.  
  10. echo $cliente->getEmail();
  11. echo "<br />"
  12. echo $cliente->getNome();
  13.  
  14. ?>

O que imprimiria a seguinte informação

carlos[]nextd.com.br
Carlos Lorenzon

Bom espero que tenham gostado destas classes e desta forma de utilizar o PHP, abandonando o paradigma de linguagem estrutural e enriquecendo seu sistema (e quem sabe seu bolso também).

T+ pessoal

Compartilhe