Doctrine Na Prática
()
Sobre este e-book
Relacionado a Doctrine Na Prática
Ebooks relacionados
Iniciando Com O Zend Framework 2 Nota: 0 de 5 estrelas0 notasCaixa de Ferramentas DevOps: Um guia para construção, administração e arquitetura de sistemas modernos Nota: 0 de 5 estrelas0 notasDesenvolvimento De Software Ii C# Programação Em Camadas Nota: 0 de 5 estrelas0 notasASP.NET MVC5: Crie aplicações web na plataforma Microsoft® Nota: 0 de 5 estrelas0 notasConsturindo um app android com delphi partes 1,2 e 3: Delphi berlim Nota: 0 de 5 estrelas0 notasYesod e Haskell: Aplicações web com Programação Funcional pura Nota: 0 de 5 estrelas0 notasEmber.js: Conheça o framework para aplicações web ambiciosas Nota: 0 de 5 estrelas0 notasBack-end Java: Microsserviços, Spring Boot e Kubernetes Nota: 0 de 5 estrelas0 notasSaia Do While Nota: 0 de 5 estrelas0 notasProgramação Web avançada com PHP: Construindo software com componentes Nota: 0 de 5 estrelas0 notasRed Hat Enterprise Linux 9 Para Iniciantes Um Guia Abrangente Para Aprendizado, Administração E Implantação Nota: 0 de 5 estrelas0 notasPHP e Laravel: Crie aplicações web como um verdadeiro artesão Nota: 0 de 5 estrelas0 notasASP.NET Core MVC: Aplicações modernas em conjunto com o Entity Framework Nota: 5 de 5 estrelas5/5O Guia Do Desenvolvedor De Software Para Linux Nota: 0 de 5 estrelas0 notasAmazon AWS: Descomplicando a computação na nuvem Nota: 5 de 5 estrelas5/5VRaptor: Desenvolvimento ágil para web com Java Nota: 0 de 5 estrelas0 notasJava Para Todos Nota: 0 de 5 estrelas0 notasArmazenando dados com Redis Nota: 0 de 5 estrelas0 notasReconhecimento De Imagens Por Ocr Nota: 0 de 5 estrelas0 notasDesenvolvendo Um Dicionário Web Nota: 0 de 5 estrelas0 notasVire o jogo com Spring Framework Nota: 0 de 5 estrelas0 notasDesenvolvimento Front-end Sem Estrutura Nota: 0 de 5 estrelas0 notasC# Pacote 100 Golpes: Série Aprenda em Uma Hora, Edição 2024 Nota: 0 de 5 estrelas0 notasIntrodução A Php Com Banco De Dados Mysql Nota: 0 de 5 estrelas0 notasGoogle App Engine: Construindo serviços na nuvem Nota: 0 de 5 estrelas0 notasProgramando Um Sistema Web Em Java Com Jsf, Hibernate E Primefaces Nota: 0 de 5 estrelas0 notasZend Expressive e PHP 7: Uma união poderosa para a criação de APIs Nota: 0 de 5 estrelas0 notasJPA Eficaz: As melhores práticas de persistência de dados em Java Nota: 0 de 5 estrelas0 notasAprenda Na Prática Comandos Sql De Consulta Para Banco De Dados Nota: 5 de 5 estrelas5/5Plotando Um Gráfico Quadrado No Php Nota: 0 de 5 estrelas0 notas
Tecnologia e Engenharia para você
Enviesados Nota: 5 de 5 estrelas5/5Aprenda Na Prática Comandos Sql De Consulta Para Banco De Dados Nota: 5 de 5 estrelas5/5Engenharia Mecanica Nota: 0 de 5 estrelas0 notasSistemas Hidráulicos Nota: 4 de 5 estrelas4/5Eletrônica Geral Nota: 5 de 5 estrelas5/5Osciloscópio: Primeiros Passos Nota: 5 de 5 estrelas5/5Auditor Interno Da Qualidade Nota: 0 de 5 estrelas0 notasFidelização Do Cliente Nota: 5 de 5 estrelas5/5Python De A A Z Nota: 0 de 5 estrelas0 notasAstronomia Básica Nota: 5 de 5 estrelas5/5O Segredo Da Roleta Online Nota: 0 de 5 estrelas0 notasIntrodução Aos Circuitos Elétricos Nota: 5 de 5 estrelas5/5Testando Componentes Eletrônicos Nota: 0 de 5 estrelas0 notasDominando A Eletrônica Nota: 5 de 5 estrelas5/5Manual Do Azulejista Nota: 0 de 5 estrelas0 notasFundamentos De Banco De Dados Nota: 0 de 5 estrelas0 notasO Que Todo Atirador Precisa Saber Sobre Balística Nota: 5 de 5 estrelas5/5Fundamentos de Som e Acústica Nota: 5 de 5 estrelas5/5Eletricista Residencial E Predial Nota: 3 de 5 estrelas3/5Paredes Gesso Acartonado Nota: 0 de 5 estrelas0 notasPython - 20% Que Eu Preciso Saber Para Ter 80% De Resultados Nota: 0 de 5 estrelas0 notasCurso De Mecânica Nota: 0 de 5 estrelas0 notasClimatização Automotiva Para Leigos Nota: 5 de 5 estrelas5/5365 Ideias De Posts Para Ter Um Instagram De Sucesso! Nota: 0 de 5 estrelas0 notasFalando Aos 52 Computadores Do Carro Moderno Nota: 0 de 5 estrelas0 notasPython Progressivo Nota: 5 de 5 estrelas5/5Power Bi Black Belt Nota: 0 de 5 estrelas0 notasEngenharia Civil em Destaque Nota: 0 de 5 estrelas0 notasCálculo I Nota: 0 de 5 estrelas0 notasPortuguês Para Concurso Nota: 0 de 5 estrelas0 notas
Avaliações de Doctrine Na Prática
0 avaliação0 avaliação
Pré-visualização do livro
Doctrine Na Prática - Elton Luís Minetto
Introdução
Projeto Doctrine
O Doctrine é um projeto Open Source que tem por objetivo criar uma série de bibliotecas PHP para tratar das funcionalidades de persistência de dados e funções relacionadas a isto.
O projeto é dividido em alguns sub-projetos, sendo os dois mais importantes o Database Abstraction Layer (DBAL) e o Object Relational Mapper (ORM).
Database Abstraction Layer
Construido sob o PHP Data Objects (PDO) o DBAL provê uma camada de abstração que facilita a manipulação dos dados usando uma interface orientada a objetos. Por usar o PDO como suporte é necessário termos as extensões configuradas. Se formos usar o DBAL para acessar uma base de dados MySQL, por exemplo, é necessário instalar a extensão correspondente.
Além da manipulação de dados (insert, update, etc) o pacote DBAL nos fornece outras funcionalidades importantes como introspecção da base de dados (podemos obter informações da estrutura de tabelas e campos), transações, eventos, etc. Vamos ver algumas destas funcionalidades nos próximos capítulos.
Object Relational Mapper
Vou usar aqui a definição que encontra-se na Wikipedia pois ela resume bem o conceito do ORM:
[…]é uma técnica de desenvolvimento utilizada para reduzir a impedância da programação orientada aos 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 se preocupar com os comandos em linguagem SQL; ele irá usar uma interface de programação simples que faz todo o trabalho de persistência.
Os ORMs são usados em diversas linguagens de programação e ambientes para facilitar o uso de banco de dados e manter uma camada de abstração entre diferentes bases de dados e conceitos.
O Doctrine tornou-se o padrão de facto
para solucionar o problema do mapeamento objeto relacional no ambiente PHP e vem sendo usado por projetos de diversos tamanhos e frameworks como o Symfony. No decorrer dos capítulos deste e-book vamos aprender a usá-lo para este fim.
Instalação
A forma mais fácil de instalarmos o Doctrine é usando o Composer. O Composer é um gerenciador de dependências para PHP. Com ele podemos definir quais pacotes vamos usar no nosso projeto e gerenciar a instalação e atualização dos mesmos.
O primeiro passo é instalarmos o próprio Composer. No Linux ou MacOSX é possível instalar o Composer pela linha de comando, executando o comando, dentro do diretório do nosso projeto:
1 curl -sS https://getcomposer.org/installer | php
Outra opção é executar o comando abaixo, que não depende do pacote curl:
1 php -r eval('?>'.file_get_contents('https://ge\ 2 tcomposer.org/installer'));
No Windows é possível fazer o download do Composer pela url http://getcomposer.org/composer.phar ou usar o instalador binário, conforme mostra a documentação oficial.
Com o Composer instalado precisamos configurá-lo para detalhar quais pacotes vamos usar. Para isso basta criarmos um arquivo chamado composer.json na raiz do projeto. No nosso caso vamos definir o uso dos pacotes do projeto Doctrine e suas versões mais atuais no momento da escrita deste livro, a 2.4.X.:
1 { 2 require
: { 3 doctrine/common
: 2.4.*
, 4 doctrine/dbal
: 2.4.*
, 5 doctrine/orm
: 2.4.*
6 } 7 }
Você pode encontrar outros pacotes disponíveis para o Composer fazendo uma pesquisa no diretório oficial de pacotes, no site https://packagist.org.
Com o arquivo composer.json criado podemos executar o comando para que a instalação seja feita:
1 php composer.phar install
Criando o bootstrap.php
Vamos agora criar o bootstrap do nosso projeto. Este arquivo possui este nome pois é usado para inicializar e configurar o ambiente, dar o pontapé inicial
do projeto. Ele vai ser executado todas as vezes que executarmos algum script, por isso é importante especial atenção a este arquivo, para que ele não contenha erros ou processamentos pesados que possam deixar as coisas lentas.
1 //AutoLoader do Composer 3 $loader = require __DIR__.'/vendor/autoload.php\ 4 '; 5 //vamos adicionar nossas classes ao AutoLoader 6 $loader->add('DoctrineNaPratica', __DIR__.'/src\ 7 '); 8 9 10 use Doctrine\ORM\Tools\Setup; 11 use Doctrine\ORM\EntityManager; 12 use Doctrine\ORM\Mapping\Driver\AnnotationDrive\ 13 r; 14 use Doctrine\Common\Annotations\AnnotationReade\ 15 r; 16 use Doctrine\Common\Annotations\AnnotationRegis\ 17 try; 18 19 //se for falso usa o APC como cache, se for tru\ 20 e usa cache em arrays 21 $isDevMode = false; 22 23 //caminho das entidades 24 $paths = array(__DIR__ . '/src/DoctrineNaPratic\ 25 a/Model'); 26 // configurações do banco de dados 27 $dbParams = array( 28 'driver' => 'pdo_mysql', 29 'user' => 'root', 30 'password' => '', 31 'dbname' => 'dnp', 32 ); 33 34 $config = Setup::createConfiguration($isDevMode\ 35 ); 36 37 //leitor das annotations das entidades 38 $driver = new AnnotationDriver(new AnnotationRe\ 39 ader(), $paths); 40 $config->setMetadataDriverImpl($driver); 41 //registra as annotations do Doctrine 42 AnnotationRegistry::registerFile( 43 __DIR__ . '/vendor/doctrine/orm/lib/Doctrin\ 44 e/ORM/Mapping/Driver/DoctrineAnnotations.php' 45 ); 46 //cria o entityManager 47 $entityManager = EntityManager::create($dbParam\ 48 s, $config);
https://gist.github.com/eminetto/7312206
Tentei documentar as principais funções do arquivo nos comentários do código, mas vou destacar alguns pontos importantes.
As primeiras duas linhas de código são importantes pois carregam o autoloader do Composer e o configura para reconhecer as classes do projeto, que iremos criar no decorrer do livro. O autoloader é responsável por incluir os arquivos PHP necessários sempre que fizermos uso das classes definidas na sessão use dos arquivos.
Na linha 18 definimos onde vão ficar as classes das nossas entidades. Neste contexto, entidades são a representação das tabelas da nossa base de dados, que serão usadas pelo ORM do Doctrine. Iremos criar estas classes no próximo capítulo.
O código entre a linha 30 e a 36 é responsável por configurar as Annotations do Doctrine. Como veremos no próximo capítulo existe mais de uma forma de configurarmos as entidades (YAML e XML) mas vamos usar neste livro o formato de anotações de blocos de códigos, que é uma das formas mais usadas.
A linha 38 cria uma instância do EntityManager, que é o componente principal do ORM e como seu nome sugere é o responsável pela manipulação das entidades (criação, remoção, atualização, etc). Iremos usá-lo inúmeras vezes no decorrer deste livro.
Precisamos agora criar a estrutura de diretórios onde iremos salvar as classes das nossas entidades, conforme configurado na linha 18 do bootstrap.php. Esta estrutura de diretórios segue o padrão PSR que é usado pelos principais frameworks e projetos, inclusive o próprio Doctrine. No comando abaixo, do Linux/MacOSX, criamos o diretório src dentro da raiz do nosso projeto:
1 mkdir -p src/DoctrineNaPratica/Model
Na linha 20 do bootstrap.php configuramos o Doctrine para conectar em uma base de dados MySQL chamada dnp. O Doctrine consegue criar as tabelas representadas pelas entidades, mas não consegue criar a base de dados, pois isso