Classe DB, padronizando formas de consultas com Active Record
by Leandro Martins on fev.10, 2009, under Classes, DB, Design Patterns, PHP
É comum nas aplicações que não utilizam nenhum framework, o uso das mais variadas formas para realizar o trabalho com o banco de dados, isso é ruim, tanto para fazer uma futura manutenção no código ou para expansão do sistema. Pensando nisso resolvi desenvolver uma classe seguindo um desing pattern e que fosse fácil de implementar dentro de qualquer aplicação, esse foi uns dos estímulos para o desenvolvimento. Vejamos como que a classe funciona, basicamente ela é composta por 3 partes: arquivo de configuração do banco de dados, a classe model e as chamadas de métodos de persistência. A classe foi desenvolvida usando o design pattern de persistência Active Record, o qual é utilizado em frameworks para persistência dos dados como: Code Ingiter, Zend Framework, Ruby on Rails e Django. Vamos ver como colocar para funcionar a classe?
Arquivo de configuração
Para usar a classe DB em seu projeto, basta ajustar os parâmetros de acordo seu servidor mysql ou psql(PostgreSQL), no arquivo config-db.xml, que fica no diretório da classe. Abaixo segue um exemplo.
config-db.xml
-
<database>
-
<adapter>mysql</adapter>
-
<params>
-
<host>localhost</host>
-
<username>user</username>
-
<password>password</password>
-
<dbname>lab_test</dbname>
-
</params>
-
</database>
Por questão de segurança o diretório onde se localiza esse arquivo é protegido de leitura via browser. Para isso, foi usado o.htaccess, que restringe a leitura do diretório.
Dica: Para uma melhor segurança, o arquivo config-db.xml pode ficar num local do servidor onde não seja acessado pelo navegador. Para isso basta informar o local do arquivo na variável $config_db_name_file que fica dentro da classe.
Arquivos de model
O arquivo model, nada mais é que uma classe tratada como se fosse uma tabela com seus objetos. Esse padrão é muito usado dentro de framework e em grandes projetos, e por isso resolvi adota-lo nessa classe. Vamos ver então como criar um model para nossa aplicação.
Livros.php
-
<?php
-
-
require_once(‘class.db/DB.php’);
-
-
class Livros extends DB {
-
-
}
-
-
?>
Olhando o código acima, percebemos que é bem simples, criar um model. Nesse exemplo, criei um model referente a Livros, que no caso é o mesmo nome da nossa tabela no banco de dados. Todos models criados têm que se estender à classe DB e ser salvo na pasta model, como mostrado no exemplo acima.
Exemplos de uso
Feito os passos acima, vamos realizar uns exemplos de como realizar consultas no nosso banco de dados, vou mostrar alguns exemplos mais usados. Informações completas pode ser lida na documentação da classe.
Seleção de um registro:
Como podemos ver, para executar um select, basta instanciar o model Livros e chamar o método select(), feito isso ele retorna um resource da consulta, para percorrer esse resource, podemos utilizar o método result(), como mostrado no exemplo acima.
Inclusão de itens:
-
<?php
-
-
require_once(‘model/Livros.php’);
-
-
$livros = new Livros();
-
-
$livros -> values($dados);
-
$livros -> insert();
-
-
?>
Para inserção de dados, o procedimento também é bem simples, instanciamos o model Livros, criamos um array associativo com os dados a serem gravados, passamos esses dados para o metodo values() e chamos o método insert() para inserir os dados.
Edição de itens:
Na edição é bem dizer o mesmo procedimento para inclusão, a diferença que é chamada um método set() que defini quais dados a serem atualizados e o método where() que define em qual registro vai ser feita a alteração.
Exclusão de itens:
-
<?php
-
-
require_once(‘model/Livros.php’);
-
-
$livros = new Livros();
-
-
$livros -> delete();
-
-
?>
Para excluir um item, basta instanciamos o model Livros e defini qual registro vai ser excluído usando o método where() e chamar o método delete(), como mostrado no exemplo acima.
Query livre, caso haja uma query muito especifica para consultar.
Quando tem uma query muito específica para ser executada, você pode utilizar o método query() passando como parâmetro uma variável contedo uma query, como mostrado no exemplo acima. Nesse caso também são retornados objetos como resultado.
Como podemos ver, a utilização da classe é bem pratica e segue um Design Pattern, isso facilita na manutenção do código e na sua visualização. Qualquer sujestão para melhoramento da classe, é bem vinda.
Para baixar a classe, clique em download.
Até a próxima!
abril 29th, 2009 on 10:48
Boa classe !!
Mas acredito que poderias fazê-la usando interface, assim, se minha Classe de Livro estiver extendendo alguma coisa, nao preciso fazer muitos rodeios para fazer funcionar.
Abraços !
maio 5th, 2011 on 9:24
Bem legal o artigo. Eu ainda me considero um aprendiz em PHP… na verdade em programação. Esse artigo me ajuda a ter mais ideías. Parabéns.