POO, PHP, DAO e MySQLI - Artigo Clube Delphi 108

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (1)  (0)

Artigo da Revista Clube Delphi Edição 108.

Esse artigo faz parte da revista Clube Delphi edição 108. Clique aqui para ler todos os artigos desta edição

 Neste artigo veremos

Veremos o desenvolvimento de uma pequena aplicação para que possamos entender como funcionam Classes, Atributos, Métodos, Herança e Instância;

Qual a finalidade

Desenvolver uma aplicação com o intuito de praticarmos o desenvolvimento de sistemas com POO no PHP;

Quais situações utilizam esses recursos?

Como já mencionado em diversos os artigos e como é sabido da maioria dos desenvolvedores, criar sistemas seguindo os princípios da orientação a objetos é uma das melhores práticas que podemos empregar em qualquer sistema.

 

Resumo do DevMan

            POO – Programação Orietada a Objetos certamente é o tema que mais chama a atenção de todos. Por que será? A explicação é simples: com POO o sistema torna-se mais robusto, inteligente, de rápido manutenção e sem dúvida nenhuma melhor entendível. Podemos aplicar POO em todas as linguagens de programação.

Veremos como trabalhar com POO em PHP puro, criando classes, atributos, métodos e utilizando um dos conceitos mais interessantes o DAO – Data Access Objects para separarmos regras de negócios de camadas de acesso a dados e layout.

 

Na edição passada, vimos o principais conceitos da utilização e deenvolvimento de sistemas com POO no PHP. Vimos como criar classes, herança, o que são atributos, métodos e uma série de outras informações pertinentes a um projeto POO. De fato o tema POO parece nunca cair de moda e a razão é bem simples. Com orientação a objetos poupamos tempo, melhoramos o entendimento dos sistemas, reutilizamos código evitando a perda de tempo (já mencionada). Uma montanha de recursos e vantagens podem se mencionadas aqui e em outros artigos. Realmente o tema é extremamente longo e detalhado.

A idéia desse artigo é colocar em prática tudo que aprendemos no artigo anterior. Faremos a criação de um sistema que nos possibilitará entender perfeitamente tudo o que já foi dito. Mão na massa!

Exemplo real de uso

Sim, foram mostrados vários conceitos, exemplos, e tenho certeza que sempre fica uma dúvida, isso é normal.
Temos que nos aprofundar um pouco mais nisso, para isso vamos criar uma aplicação(Contas Pagar e Receber) em OO, utilizando logicamente PHP, banco de dados MySQL, e o mais interessante a extensão MySQLI. A principal idéia aqui é também utilizar a DAO (Data Access Objects), para a persistência de dados, separando as regras de negócios das regras de acesso a banco de dados.

Lembrando que aqui não estaremos utilizando nenhum editor. Você pode escolher um de sua preferência. Apenas crie um diretório a sua escolha para que possa ser salvo todos os arquivos que criaremos nesse projeto. É interessante também você ter um servidor instalado na sua máquina, rodando PHP e MySQL e caso não tenha nenhum recomendo a utilização do WAMP (um pacote que faz a instalação do apache, php, mysql em alguns cliques). 

Nota do DevMan

A extensão MySQLI, conhecida como MySQL melhorada, foi desenvolvida para dar suporte as novas funcionalidades do MySQL 4.1. Outra coisa interessante é que com ela  podemos utilizar ela no modo orientado a objetos, já que não verdade ela é uma classe.

 

Banco de Dados

Primeiramente vamos criar nosso banco de dados. Não entrarei em detalhes aqui sobre isso por não ser o escopo principal do artigo. Basicamente teremos quatro tabelas: Clientes, Fornecedores, ContasPagar e ContasReceber. Criaremos também um sistema simples, mas com base nele será possível sim e, com facilidade, você incrementar mais funcionalidades ao sistema. É importante salientar também algumas regras da nossa aplicação, onde uma conta a pagar, será paga a um fornecedor e conta a receber será recebida de um cliente, com essa pequena idéia você já vai entender as tabelas do banco de dados. Conforme a Figura 1, crie as tabelas necessárias. 

ClubeDelphi PLUS!

Acesse agora o mesmo o portal do assinante ClubeDelphi e inscreva-se para o curso Rodrigo Carreiro que mostra como trabalhar com bancos de dados MySQL.  

www.devmedia.com.br/cursos/listcurso.asp?curso=136

 

Figura 1. Tabelas do banco de dados

 

Classe Contas Pagar e Contas Receber

Para iniciar nosso desenvolvimento, termos que começar criando as classes ContasPagar e ContasReceber. Essas classes serão responsáveis por abstrair as tabelas do nosso banco de dados, que irão conter nossos atributos e propriedades com métodos GET e SET, que são os campos das suas respectivas tabelas.

Inicie um novo arquivo no Bloco de Notas ou no seu editor preferido. Digite o código da Listagem 1. Crie no diretório principal da aplicação um subdiretório denominado Classes e salve as respectivas classes no mesmo com os nomes de ContasPagar.php e ContasReceber.php.

Como dito, na Listagem 1 temos o código das classes Contas a Receber e Contas a Pagar. No início da listagem estamos definindos os atributos da classe Conta a Receber. Veja que criamos 6 atributos que são:

·         $id_contasreceber: id do registro;

·         $documento_contasreceber: documento do contas a receber;

·         $valor_contasreceber: evidentimente o valor desse documento;

·         $cliente_contasreceber: id do cliente para que possamos identificá-lo;

·         $status_contasreceber: o status da documento, ou seja, o andamento do documento;

·         $vencimento_contasreceber: vencimento do registro.

 

Perceba que todos os atributos estão declarados como Private, ou seja, estarão disponíveis apenas para classe. Em seguida temos a declaração de todos os métodos Get e Set das classes. Como mencionado, esse métodos servem para que possamos recuperar ou gravar um valor no sistema. Tanto a classe ContasReceber quanto ContasPagar possuem atributos e métodos semelhantes. O importante a observar é que a construção é idêntica para ambos os casos.

 

Listagem 1. ContasPagar e ContasReceber

<?php

//Contas Receber

class ContasReceber{

     private $id_contasreceber = null;

     private $documento_contasreceber = null;

    private $valor_contasreceber = null;

    private $cliente_contasreceber = null;

    private $status_contasreceber = null;

    private $vencimento_contasreceber = null;

     public function getCliente_contasreceber(){

       return $this->cliente_contasreceber;

     }

    public function getDocumento_contasreceber(){

        return $this->documento_contasreceber;

     }

     public function getId_contasreceber(){

        return $this->id_contasreceber;

     }

    public function getStatus_contasreceber(){

        return $this->status_contasreceber;

     }

    public function getValor_contasreceber({

        return $this->valor_contasreceber;

     }

     public function getVencimento_contasreceber(){

        return $this->vencimento_contasreceber;

     }

    public function setCliente_contasreceber($cliente_contasreceber){

        $this->cliente_contasreceber = $cliente_contasreceber;

     }

    public function setDocumento_contasreceber($documento_contasreceber){

        $this->documento_contasreceber = $documento_contasreceber;

     }

    public function setId_contasreceber($id_contasreceber){

        $this->id_contasreceber = $id_contasreceber;

     }

    public function setStatus_contasreceber($status_contasreceber){

        $this->status_contasreceber = $status_contasreceber;

    }

    public function setValor_contasreceber($valor_contasreceber){

        $this->valor_contasreceber = $valor_contasreceber;

     }

    public function setVencimento_contasreceber($vencimento_contasreceber){

        $this->vencimento_contasreceber = $vencimento_contasreceber;

    }

}

?>

<?php

//Contas Pagar

class ContasPagar{

     private $id_contaspagar = null;

     private $documento_contaspagar = null;

     private $valor_contaspagar = null;

     private $fornecedor_contaspagar = null;

     private $status_contaspagar = null;

     private $vencimento_contaspagar = null;

    public function getDocumento_contaspagar(){

        return $this->documento_contaspagar;

     }

    public function getFornecedor_contaspagar(){

        return $this->fornecedor_contaspagar;

     }

    public function getId_contaspagar(){

        return $this->id_contaspagar;

     }

    public function getStatus_contaspagar(){

        return $this->status_contaspagar;

     }

    public function getValor_contaspagar(){

        return $this->valor_contaspagar;

     }

     public function getVencimento_contaspagar(){

        return $this->vencimento_contaspagar;

     }

    public function setDocumento_contaspagar($documento_contaspagar){

        $this->documento_contaspagar = $documento_contaspagar;

     }   

     public function setFornecedor_contaspagar($fornecedor_contaspagar){

        $this->fornecedor_contaspagar = $fornecedor_contaspagar;

     }

    public function setId_contaspagar($id_contaspagar){

        $this->id_contaspagar = $id_contaspagar;

     }

    public function setStatus_contaspagar($status_contaspagar){

        $this->status_contaspagar = $status_contaspagar;

     }

    public function setValor_contaspagar($valor_contaspagar){

        $this->valor_contaspagar = $valor_contaspagar;

    }

     public function setVencimento_contaspagar($vencimento_contaspagar){

        $this->vencimento_contaspagar = $vencimento_contaspagar;

    }

}

?>

 

Conexão usando a extensão MySQLI

Antes de começarmos a criar nossas classes DAO, criaremos, no diretório principal do projeto, um arquivo denominado Conexao.php que será responsável pela conexão com nosso banco de dados. Para isso vamos criar uma variável que será uma instância da classe MySQLI e no seu próprio construtor já informar os parâmetros como (servidor, login, senha, banco) com isso podemos utilizar apenas o objeto $con que será do tipo MySQLI como citei para realizar a conexão com o BD. Nós visualizaremos melhor isso tudo com as classe DAO.

Nota: Para que possa usar a extensão MySQLI é necessário habilitá-la no arquivo PHP.INI que fica no diretório de instalação do PHP. Basta localizar a referência a biblioteca e descomentar a linha retirando o caractere #.

 Na realidade apenas teremos uma linha de código nesse arquivo PHP. Como visto logo a seguir. Para que não sabe quando uma variável é atribuída no PHP é a torna-se diponível a todos os scripts que fazem chamada ao script onde essa variável foi atribuída. Ou seja, usaremos o método require() ou require_once() toda vez que precisarmos usar tal variável.

 

    $con = new mysqli("localhost", "root", "", "financeiro");

 Criando as classes DAO

Vamos criar nesse momento as classes DAO (Data Access Objects), mas antes disso devemos entender como que funcionam essas classes. Data Access Object é um modelo de persistência de dados muito utilizando por desenvolvedores que desejam criar seus sistemas baseados em conceitos de orietação a objetos, como o MVC (Model – View – Controller), por exemplo. Em MVC todas as funções para persistência de dados e qualquer outra integração com o banco de dados devem se feitas em classe do tipo DAO. O principal objetivo disso é separar regras de negócios de regras de acesso a dados.

Nota DevMan

Model-view-controller (MVC) é um padrão de arquitetura de software. Com o aumento da complexidade das aplicações desenvolvidas torna-se fundamental a separação entre os dados (Model) e o layout (View). Desta forma, alterações feitas no layout não afectam a manipulação de dados, e estes poderão ser reorganizados sem alterar o layout."

A exibição deste artigo foi interrompida :(
Este post está disponível para assinantes MVP

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?