Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Mapeamento Objeto-Relacional com PEAR::Data_Object

1,693 views

Published on

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

  • Be the first to comment

  • Be the first to like this

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

×