Mapeamento Objeto-Relacional com PEAR::Data_Object
1. Mapeamento objeto-relacional em PHP
com PEAR::Data_Object
Almir Neto – almirneto@gmail.com
CoNaPHP – CONISLI 2008
http://www.conaphp.com.br/
São Paulo, 18 e 19 de Outubro de 2008
2. Mapeamento objeto-relacional em PHP
com PEAR::Data_Object
Grupo de Desenvolvedores PHP de Goiás
Lista de Discussão
●
Troca de Conhecimentos
●
Encontros
●
Palestras
●
Eventos
●
Networking
●
http://www.gophp.com.br
●
3. Mapeamento objeto-relacional em PHP com PEAR::Data_Object
O que é Mapeamento Objeto
Relacional?
• “Mapeamento objeto-relacional (ou ORM) é uma técnica de
desenvolvimento utilizada para reduzir a impedância da
programação orientada a objetos utilizando bancos de dados
relacionais. As tabelas do banco de dados são representadas
através de classes e os registros de cada tabela são representados
como instâncias das classes correspondentes.
Com esta técnica, o programador não precisa de se preocupar com
os comandos em linguagem SQL; irá usar uma interface de
programação simples que faz todo o trabalho de persistência.”
Wikipédia
Almir Neto
almirneto@gmail.com
4. Mapeamento objeto-relacional em PHP com PEAR::Data_Object
O que é PEAR?
• O PEAR (PHP Extension and Aplication Repository) é um
framework e um sistema de distribuição para a codificação de
componentes em PHP.
• Mais Informações: http://pear.php.net
Almir Neto
almirneto@gmail.com
5. Mapeamento objeto-relacional em PHP com PEAR::Data_Object
PEAR::DB_DataObject
• Dispensa o uso de SQL para operações CRUD(Create, Read,
Update, Delete)
• Portabilidade do Banco de Dados
• Facilidade para manipular dados
• Velocidade do desenvolvimento
• Base de dados sempre documentada
• Gera classes PHP com o mapeamento das tabelas
• Métodos setters e getters automáticos
Almir Neto
almirneto@gmail.com
7. Mapeamento objeto-relacional em PHP com PEAR::Data_Object
Gerando as Classes PHP
$> createTables.php /diretorio/DataObject.ini
• Arquivos criados: formato.php, livro.php, revisao.php, cliente.php, BD.ini
Almir Neto
almirneto@gmail.com
8. Mapeamento objeto-relacional em PHP com PEAR::Data_Object
Classes Geradas
<?php
/**
* Table Definition for formato
*/
require_once 'DB/DataObject.php';
class Formato extends DB_DataObject
{
###START_AUTOCODE
/* the code below is auto generated do not remove the above tag */
var $__table = 'formato'; // table name
var $formato_id; // int(4) not_null primary_key unique_key
unsigned auto_increment
var $titulo; // string(40)
/* ZE2 compatibility trick*/
function __clone() { return $this;}
/* Static get */
function staticGet($k,$v=NULL)
return DB_DataObject::staticGet('Formato',$k,$v);
/* the code above is auto generated do not remove the tag below */
###END_AUTOCODE
}
Almir Neto
?>
almirneto@gmail.com
9. Mapeamento objeto-relacional em PHP com PEAR::Data_Object
Arquivo de configuração gerado
[livro]
livro_id = 129
titulo = 130
descricao = 66
isbn = 130
[livro__keys]
livro_id = N
[cliente]
cliente_id = 129
nome = 130
rua = 2
cep = 2
cidade = 2
[cliente__keys]
cliente_id = N
Almir Neto
almirneto@gmail.com
10. Mapeamento objeto-relacional em PHP com PEAR::Data_Object
Buscando registros pela chave
primária
<?php
require_once('DB/DataObject.php');
require('config.php');
$livro = DB_DataObject::factory('livro');
$livro->get(42);
echo 'Este é o livro: '.$livro->titulo;
?>
Almir Neto
almirneto@gmail.com
11. Mapeamento objeto-relacional em PHP com PEAR::Data_Object
Buscando vários registros
<?php
$livro = DB_DataObject::factory('livro');
$livro->formato_id = 23;
$num = $livro->find();
$i = 1;
while ($livro->fetch()) {
echo quot;Livro: $i de $num:{$livro->titulo}<br>quot;;
$i++;
}
?>
Almir Neto
almirneto@gmail.com
12. Mapeamento objeto-relacional em PHP com PEAR::Data_Object
Adicionando condições
<?php
$livro = DB_DataObject::factory('livro');
$livro->whereAdd(quot;livro.titulo LIKE 'GOPHP%'quot;);
$num = $livro->find();
$i = 1;
while ($livro->fetch()) {
echo quot;Livro: $i de $num: {$livro->titulo}<br>quot;;
$i++;
}
?>
Almir Neto
almirneto@gmail.com
13. Mapeamento objeto-relacional em PHP com PEAR::Data_Object
Inserindo um registro
<?php
$livro = DB_DataObject::factory('livro');
$livro->titulo = 'Software Livre';
$livro->formato_id = 23;
$livro_id = $livro->insert();
?>
Almir Neto
almirneto@gmail.com
14. Mapeamento objeto-relacional em PHP com PEAR::Data_Object
Atualizando um registro
<?php
$livro = DB_DataObject::factory('livro');
$livro->get(42);
$livro->titulo = 'Software Livre';
$livro->update();
?>
Almir Neto
almirneto@gmail.com
15. Mapeamento objeto-relacional em PHP com PEAR::Data_Object
Deletando um registro
<?php
$livro = DB_DataObject::factory('livro');
$livro->get(42);
$livro->delete();
?>
Almir Neto
almirneto@gmail.com