SlideShare una empresa de Scribd logo
1 de 21
Descargar para leer sin conexión
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Mapeamento objeto-relacional em PHP com PEAR::Data_Object




  Agradecimentos



                   Almir Neto
             almirneto@gmail.com
Mapeamento objeto-relacional em PHP com PEAR::Data_Object




               Fim



                   Almir Neto
             almirneto@gmail.com

Más contenido relacionado

Destacado

Rosario suena en fotos
Rosario suena en fotosRosario suena en fotos
Rosario suena en fotosguest2d80b
 
trabajo tarjeta madre
trabajo tarjeta madretrabajo tarjeta madre
trabajo tarjeta madrepinkpanter
 
Global Classroom Learning Episode
Global Classroom Learning EpisodeGlobal Classroom Learning Episode
Global Classroom Learning EpisodeChristie Harwood
 
Rp em ação - Prefeitura Municipal de Esteio
Rp em ação - Prefeitura Municipal de EsteioRp em ação - Prefeitura Municipal de Esteio
Rp em ação - Prefeitura Municipal de Esteioagexcom
 
мрачная эпоха и архаика.
мрачная эпоха и архаика.мрачная эпоха и архаика.
мрачная эпоха и архаика.guest8a5efd
 
Rp em Ação- Educandário São João Batista
Rp em Ação- Educandário  São João BatistaRp em Ação- Educandário  São João Batista
Rp em Ação- Educandário São João Batistaagexcom
 
Probabilistically Checkable Proofs
Probabilistically Checkable ProofsProbabilistically Checkable Proofs
Probabilistically Checkable ProofsStas Fomin
 
Amon-Ra Window Systems Pvt. Ltd., Thane, UPVC Doors
Amon-Ra Window Systems Pvt. Ltd., Thane, UPVC DoorsAmon-Ra Window Systems Pvt. Ltd., Thane, UPVC Doors
Amon-Ra Window Systems Pvt. Ltd., Thane, UPVC DoorsIndiaMART InterMESH Limited
 
Dia De Muertos
Dia De MuertosDia De Muertos
Dia De Muertosale5
 
John and Soni Ant Website
John and Soni Ant WebsiteJohn and Soni Ant Website
John and Soni Ant WebsiteTamaki College
 
Power De Tia Doris
Power De Tia DorisPower De Tia Doris
Power De Tia Dorisguestae7b1
 

Destacado (16)

Rosario suena en fotos
Rosario suena en fotosRosario suena en fotos
Rosario suena en fotos
 
trabajo tarjeta madre
trabajo tarjeta madretrabajo tarjeta madre
trabajo tarjeta madre
 
14example
14example14example
14example
 
Global Classroom Learning Episode
Global Classroom Learning EpisodeGlobal Classroom Learning Episode
Global Classroom Learning Episode
 
Rp em ação - Prefeitura Municipal de Esteio
Rp em ação - Prefeitura Municipal de EsteioRp em ação - Prefeitura Municipal de Esteio
Rp em ação - Prefeitura Municipal de Esteio
 
Jair 2ºB
Jair 2ºBJair 2ºB
Jair 2ºB
 
мрачная эпоха и архаика.
мрачная эпоха и архаика.мрачная эпоха и архаика.
мрачная эпоха и архаика.
 
Rp em Ação- Educandário São João Batista
Rp em Ação- Educandário  São João BatistaRp em Ação- Educandário  São João Batista
Rp em Ação- Educandário São João Batista
 
cell parts
cell partscell parts
cell parts
 
Future Sences
Future SencesFuture Sences
Future Sences
 
Sat Average
Sat AverageSat Average
Sat Average
 
Probabilistically Checkable Proofs
Probabilistically Checkable ProofsProbabilistically Checkable Proofs
Probabilistically Checkable Proofs
 
Amon-Ra Window Systems Pvt. Ltd., Thane, UPVC Doors
Amon-Ra Window Systems Pvt. Ltd., Thane, UPVC DoorsAmon-Ra Window Systems Pvt. Ltd., Thane, UPVC Doors
Amon-Ra Window Systems Pvt. Ltd., Thane, UPVC Doors
 
Dia De Muertos
Dia De MuertosDia De Muertos
Dia De Muertos
 
John and Soni Ant Website
John and Soni Ant WebsiteJohn and Soni Ant Website
John and Soni Ant Website
 
Power De Tia Doris
Power De Tia DorisPower De Tia Doris
Power De Tia Doris
 

Similar a Mapeamento Objeto-Relacional com PEAR::DataObject

BigData - ElasticSearch + PHP
BigData - ElasticSearch + PHPBigData - ElasticSearch + PHP
BigData - ElasticSearch + PHPFelipe Weckx
 
PHP robusto com Zend Framework
PHP robusto com Zend FrameworkPHP robusto com Zend Framework
PHP robusto com Zend FrameworkJaime Neto
 
Desenvolvimento Mobile com Ruby
Desenvolvimento Mobile com RubyDesenvolvimento Mobile com Ruby
Desenvolvimento Mobile com RubyRodrigo Martins
 
As novidades do PHP5 (2005)
As novidades do PHP5 (2005)As novidades do PHP5 (2005)
As novidades do PHP5 (2005)Pablo Dall'Oglio
 
Aula 5 PHP - Criação de sites II
Aula 5 PHP - Criação de sites IIAula 5 PHP - Criação de sites II
Aula 5 PHP - Criação de sites IIinfo_cimol
 
Aula 02 - Introdução ao PHP - Programação Web
Aula 02  - Introdução ao PHP - Programação WebAula 02  - Introdução ao PHP - Programação Web
Aula 02 - Introdução ao PHP - Programação WebDalton Martins
 
Meu projeto final - Neobase 2.0
Meu projeto final - Neobase 2.0Meu projeto final - Neobase 2.0
Meu projeto final - Neobase 2.0Saulo Vallory
 
Minicurso de PHP Com Ajax
Minicurso de PHP Com AjaxMinicurso de PHP Com Ajax
Minicurso de PHP Com AjaxAdler Medrado
 
PHP: Programando com orientação a Objetos
PHP: Programando com orientação a ObjetosPHP: Programando com orientação a Objetos
PHP: Programando com orientação a ObjetosPablo Dall'Oglio
 
Novidades do elasticsearch 2.0 e como usá-lo com PHP
Novidades do elasticsearch 2.0 e como usá-lo com PHPNovidades do elasticsearch 2.0 e como usá-lo com PHP
Novidades do elasticsearch 2.0 e como usá-lo com PHPLuiz Henrique Zambom Santana
 
Aula 1 - Curso de PHP/CI e Tecnologias Relacionadas
Aula 1 - Curso de PHP/CI e Tecnologias RelacionadasAula 1 - Curso de PHP/CI e Tecnologias Relacionadas
Aula 1 - Curso de PHP/CI e Tecnologias RelacionadasCJR, UnB
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosRegis Magalhães
 
Desenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana frameworkDesenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana frameworkMarcelo Rodrigo
 
PHP-PEAR, Peras e Cachorros
PHP-PEAR, Peras e CachorrosPHP-PEAR, Peras e Cachorros
PHP-PEAR, Peras e Cachorroselliando dias
 

Similar a Mapeamento Objeto-Relacional com PEAR::DataObject (20)

BigData - ElasticSearch + PHP
BigData - ElasticSearch + PHPBigData - ElasticSearch + PHP
BigData - ElasticSearch + PHP
 
Php 07 Cakephp
Php 07 CakephpPhp 07 Cakephp
Php 07 Cakephp
 
PHP robusto com Zend Framework
PHP robusto com Zend FrameworkPHP robusto com Zend Framework
PHP robusto com Zend Framework
 
Palestra PHPSP+Locaweb 2014 - PDO
Palestra PHPSP+Locaweb 2014 - PDOPalestra PHPSP+Locaweb 2014 - PDO
Palestra PHPSP+Locaweb 2014 - PDO
 
Desenvolvimento Mobile com Ruby
Desenvolvimento Mobile com RubyDesenvolvimento Mobile com Ruby
Desenvolvimento Mobile com Ruby
 
Zend Framework
Zend FrameworkZend Framework
Zend Framework
 
MongoDB + PHP
MongoDB + PHPMongoDB + PHP
MongoDB + PHP
 
As novidades do PHP5 (2005)
As novidades do PHP5 (2005)As novidades do PHP5 (2005)
As novidades do PHP5 (2005)
 
Aula 5 PHP - Criação de sites II
Aula 5 PHP - Criação de sites IIAula 5 PHP - Criação de sites II
Aula 5 PHP - Criação de sites II
 
Aula 02 - Introdução ao PHP - Programação Web
Aula 02  - Introdução ao PHP - Programação WebAula 02  - Introdução ao PHP - Programação Web
Aula 02 - Introdução ao PHP - Programação Web
 
Meu projeto final - Neobase 2.0
Meu projeto final - Neobase 2.0Meu projeto final - Neobase 2.0
Meu projeto final - Neobase 2.0
 
Minicurso de PHP Com Ajax
Minicurso de PHP Com AjaxMinicurso de PHP Com Ajax
Minicurso de PHP Com Ajax
 
PHP: Programando com orientação a Objetos
PHP: Programando com orientação a ObjetosPHP: Programando com orientação a Objetos
PHP: Programando com orientação a Objetos
 
Novidades do elasticsearch 2.0 e como usá-lo com PHP
Novidades do elasticsearch 2.0 e como usá-lo com PHPNovidades do elasticsearch 2.0 e como usá-lo com PHP
Novidades do elasticsearch 2.0 e como usá-lo com PHP
 
Aula 1 - Curso de PHP/CI e Tecnologias Relacionadas
Aula 1 - Curso de PHP/CI e Tecnologias RelacionadasAula 1 - Curso de PHP/CI e Tecnologias Relacionadas
Aula 1 - Curso de PHP/CI e Tecnologias Relacionadas
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passos
 
Php 02 Primeiros Passos
Php 02 Primeiros PassosPhp 02 Primeiros Passos
Php 02 Primeiros Passos
 
Desenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana frameworkDesenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana framework
 
Linguagem PHP
Linguagem PHPLinguagem PHP
Linguagem PHP
 
PHP-PEAR, Peras e Cachorros
PHP-PEAR, Peras e CachorrosPHP-PEAR, Peras e Cachorros
PHP-PEAR, Peras e Cachorros
 

Último

Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfNatalia Granato
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 

Último (6)

Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 

Mapeamento Objeto-Relacional com PEAR::DataObject

  • 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
  • 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. 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
  • 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. 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. 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. 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. Mapeamento objeto-relacional em PHP com PEAR::Data_Object Agradecimentos Almir Neto almirneto@gmail.com
  • 21. Mapeamento objeto-relacional em PHP com PEAR::Data_Object Fim Almir Neto almirneto@gmail.com