Mapeamento Objeto-Relacional com PEAR::Data_Object

1.497 visualizações

Publicada em

Slides used at CONAPHP 2008. The main subject is software development using a PEAR library that implements ORM

0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
1.497
No SlideShare
0
A partir de incorporações
0
Número de incorporações
10
Ações
Compartilhamentos
0
Downloads
18
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Mapeamento Objeto-Relacional com PEAR::Data_Object

  1. 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. 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. 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. 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. 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
  6. 6. Mapeamento objeto-relacional em PHP com PEAR::Data_Object Arquivo de Configuração • Arquivo .ini [DB_DataObject] database = mysql://user:pw@host/BD schema_location = /dataobjects/schema/ class_location = /dataobjects/ require_prefix = /dataobjects/ extends_location = DB/DataObject.php extends = DB_DataObject • Arrays PHP Almir Neto almirneto@gmail.com
  7. 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. 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. 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. 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. 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. 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. 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. 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. 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
  16. 16. Mapeamento objeto-relacional em PHP com PEAR::Data_Object Relacionamentos utilizando Join • Arquivo BD.links.ini [livro] formato_id = formato:formato_id [revisao] livro_id = livro:livro_id cliente_id = cliente:cliente_id Almir Neto almirneto@gmail.com
  17. 17. Mapeamento objeto-relacional em PHP com PEAR::Data_Object Relacionamentos utilizando Join <?php $revisao = DB_DataObject::factory('revisao'); $cliente = DB_DataObject::factory('cliente'); $revisao->livro_id = 4711; $revisao->joinAdd($cliente, 'INNER'); $revisao->selectAdd('cliente.nome'); $revisao->find(); while ($revisao->fetch()) { echo $revisao->titulo.' (Revisor: '. $revisao->nome.')<br>'; echo $revisao->descricao.'<br>'; } ?> Almir Neto almirneto@gmail.com
  18. 18. Mapeamento objeto-relacional em PHP com PEAR::Data_Object Método Fetch function fetch() { $ret = parent::fetch(); if ($ret === false) return false; require_once(quot;cliente/cliente.phpquot;); $cliente = DB_DataObject::Factory('cliente'); $cliente->get($this->cliente_id); $this->setCliente($cliente); require_once(quot;livro/livro.phpquot;); $livro = DB_DataObject::Factory('livro'); $livro->get($this->livro_id); $this->setLivro($livro); return true; Almir Neto } almirneto@gmail.com
  19. 19. Mapeamento objeto-relacional em PHP com PEAR::Data_Object Bibliografia Wikipédia - http://www.wikipedia.org • • PHP - http://www.php.net • PEAR - http://pear.php.net • Markus Wolff Almir Neto almirneto@gmail.com
  20. 20. Mapeamento objeto-relacional em PHP com PEAR::Data_Object Agradecimentos Almir Neto almirneto@gmail.com
  21. 21. Mapeamento objeto-relacional em PHP com PEAR::Data_Object Fim Almir Neto almirneto@gmail.com

×