Configurando o Doctrine no Zend Framework 2

Doctrine é um framework para mapeamento objetos relacionais(ORM) escrito em php, bastante similar ao hibernate que é um orm muito popular na linguagem java, e para quem conhece este último não terá dificuldades ao trabalhar com o doctrine. Como no zend 2 o processo de instalação ficou muito mais fácil do que nas versões anteriores, a instalação e configuração do doctrine no seu projeto não será de grandes dificuldades.

Baixando o doctrine

O zend implementou na sua nova versão um gerenciador de dependências chamado composer, o que tornou a inclusão de biblioteca de terceiro muito prática, e para baixar o doctrine iremos solicitar que o composer faça o trabalho pesado, nesse caso devemos apenas modificar o arquivo composer.json e localizar a linha onde temos o objeto required, conforme exemplo demostrado logo abaixo:

No exemplo acima apenas temos como dependência o php e o zend, entretanto nosso objetivo nesse momento é utilizar o doctrine, para isso vamos instruir ao composer da necessidade do doctrine no nosso projeto.

Agora vamos solicitar ao gerenciador de dependências para que baixe o orm e todas suas dependências, conforme o código abaixo:

O resultado deve ser algo parecido com a imagem logo abaixo.

baixando_dependencias_doctrine

Saída após baixado o doctrine e suas dependências pelo composer

Se tudo correu bem, o doctrine já está pronto para uso, nesse momento devemos apenas realizar as configurações para que possamos utiliza-lo na nossa aplicação.

Configurando o doctrine para trabalhar com Zend Framework 2

O doctrine possuí dois módulos para trabalhar com o zend 2, que devemos adicionar ao nosso projeto, edite o arquivo de configuração config/application.config.php e adicione as linhas referentes aos módulos do orm.

Após adicionado os módulos anteriores, devemos configurar o acesso a base de dados, para isso criaremos um arquivo denominado database.global.php dentro da pasta config da nossa aplicação e adicionar o seguinte código nele:

O exemplo acima não é uma regra obrigatória, você pode optar por adicionar esta configuração junto as da suas entidades, opto por esse modelo pois utilizo configurações especificas no meu ambiente de desenvolvimento e outra no ambiente de produção, e para sobrescrever estas regras, apenas basta criar um novo arquivo denominado database.local.php informando as configurações do seu ambiente de desenvolvimento. Enfim, nesse momento nos resta apenas instruir ao doctrine onde localizar nossas entidades, para isso iremos modificar o arquivo de configuração do módulo application no diretório /module/Application/config/module.config.php, nele devemos adicionar as configurações necessárias para localizar nossas entidades, adicione o seguinte código no final do array de configuração do seu módulo.

Observação importante, nota-se que na configuração de acesso as entidades do doctrine é informada a constante __NAMESPACE__, entretanto no nosso arquivo de configuração não é especificada a sua namespace, sendo assim, devemos adicionar no início do arquivo de configuração do módulo o seu respectivo namespace.

Nesse momento o orm já esta configurado, iremos apenas criar uma simples aplicação para atestar o seu funcionamento.

 Mapeando nossa primeira entidade

Neste momento o doctrine já está devidamente configurado, porém iremos criar uma simples entidade para fechar com chave de ouro.

Criando a tabela usuarios.

Após criado a tabela iremos criar nossa primeira entidade. Crie uma pasta Entity dentro do diretório modules/Application/src/Application/ caso ainda não exista, após criada a pasta temos agora que criar a classe Usuario para mapear nossa tabela no banco de dados.

Não abordarei mutos detalhes sobre o doctrine neste artigo para que o mesmo não fique muito extenso, nesse momento apenas explicarei a sua instalação e configuração no Zend Framework 2. Nota-se que a classe Usuario apenas possuem atributos com seus respectivos métodos getters e setters, cada atributo representa seus respectivo atributos no banco de dados.

Consultando os registros da tabela usuarios com o doctrine

Enfim, nesse momento iremos apenas realizar uma consulta pra fechar com chave de ouro, dentro da sua action realize o procedimento como no código exemplificado abaixo.

Caso não seja lançada nenhuma exceção é sinal que o orm está funcionando corretamente.

Obs: O doctrine exige que a pasta data da sua aplicação possua permissões de escrita.

Instalando e configurando o Zend Framewok 2

zf2-logo-small

O zend 2 trouxe diversas melhorias, dentre elas estão: adoção do composer como gerenciador de dependências, git como controle de versão oficial do projeto, injeção de dependências, dentre outras novidades. A mudança mais notada foi com a adoção do composer para gerenciamento de dependências do projeto, não é mais necessário baixar os fontes e inclui-los  manualmente na sua aplicação, “a não ser que você goste de dificultar as coisas”.

Agora vamos colocar a mão na massa. 😀

Habilitando o modulo rewrite do apache

Quem utiliza distribuições como CentOS ou Fedora o módulo rewrite já vem habilitado por padrão, entretanto distros derivadas do debian este módulo nem sempre vem habilitado, para habilita-lo basta digitar o seguinte comando no terminal:

Para que o módulo entre em funcionamento é necessário reiniciar o apache.

Esse tal de git

O git é um sistema de controle de versão distribuído desenvolvido por ninguém menos que Linux Tovalds, bastante difundido na área de desenvolvimento de software, presente em muitos projetos de grande porte, dentre eles o próprio php e o Kernel Linux. O git não é um componente obrigatório para instalação do Zend Framework, porém extremamente recomendado para baixar o esqueleto da aplicação e quem sabe você habituei a utiliza-lo nos seus projetos “Tenho certeza que não se arrependerá”. Entretanto caso você opte por não utilizar, basta baixar o projeto diretamente no github. No nosso caso, como lidamos com o git no dia a dia, faremos da maneira mais indicada que é utilizando o sistema de controle de versão, para isso precisamos realizar a instalação do mesmo, caso ainda não possua basta digitar o seguinte comando no terminal.

Baixando a aplicação esqueleto do zend

O projeto esqueleto do zend é uma aplicação com as configurações básicas do framework, incluindo todas estruturas de pastas e pré configurações para termos um ponto de partida.

No exemplo acima acessamos a pasta root do apache e baixamos o projeto esqueleto nomeando a pasta como zend, caso o último parâmetro referente ao nome do projeto seja omitido o git assumira o nome do projeto a ser clonado,  que no nosso caso é ZendSkeletonApplication. Apesar de ter baixado o projeto esqueleto o core do zend não vem embutido no mesmo, esse como o próprio nome diz é apenas um esqueleto para que não se perca tempo realizando as configurações iniciais.

Gerenciador de dependências no php? nunca ouvi falar

Quem possui familiaridade em outras linguagens como Java, Python, Rubi provavelmente já deve conhecer algum gerenciador de dependências, entretanto no âmbito do php isso é uma novidade, porém é outra ferramenta extremamente produtiva e recomendada, ao baixar o zend Skeleton Application o gerenciador de dependências composer já vem incluído dentro da aplicação com um arquivo composer.phar que é o gerenciador de dependência em peso e outro composer.json que é onde são definidas quais as dependências deve ser satisfeitas.

Antes de baixar as dependências do nosso projeto, vamos atualizar o composer pois como esse já vem incluída dentro do esqueleto nem sempre representa a última versão, para isso acesse a pasta que foi definida ao clonar o projeto e vamos atualizar o composer digitando o seguinte comando:

Após a atualização vamos baixar as dependências necessárias para o perfeito funcionamento do zend framework.

O resultado deve ser parecido com a imagem logo abaixo.

composer_instalando_dependencias

Nesse momento já temos nosso projeto devidamente funcionado, para finalizar com chave de ouro, iremos apenas configurar o virtual hosts no apache, afim de simular no nosso ambiente de desenvolvimento as mesmas configurações do ambiente de produção.

Configurando o virtual hosts

O processo de configuração do virtual host é muito simples, basta criar o arquivo com o nome a ser escolhido por você no diretório /etc/apache2/sites-available/nome_do_host, no nosso caso utilizaremos o nome zend, após criar o arquivo basta edita-lo e adicionar o seguinte código.

No nosso caso assumimos que a pasta onde contém o projeto esqueleto está no diretório /var/www/zend e o domínio no qual utilizaremos para acessar o projeto será zend.localhost, ambos são de livre escolha do leitor.

Nesse exato momento precisamos apenas realizar mais 3 passos para que nossa aplicação esteja devidamente configurada, o primeiro é criar um link simbólico na pasta /etc/apache2/sites-enabled/zend apontado para o arquivo /etc/apache2/sites-available/zend, esse passo poderia ser contornado caso tenhamos criado o arquivo diretamente dentro da pasta /etc/apache2/sites-enabled/, porém optei por seguir esses passos afim de familiarizar o leitor com as configurações de virtual hosts utilizada nos servidores de produção.

Obs: Caso esteja utilizando o centos provavelmente você não encontrará a pasta sites-available e muito menos a pasta sites-enable, nesse caso você pode inserir a configuração do virtual host diretamente no arquivo de configuração do apache, preferencialmente no final do arquivo /etc/httpd/conf/httpd.conf.

Ainda nos resta mais 2 passos que são adicionar o subdomínio do zend.localhost no arquivo hosts, para isso basta adicionar a seguinte linha no final do arquivo /etc/hosts.

Por fim precisamos apenas reiniciar o apache.

Nesse momento a instalação do Zend 2 já foi concluída,  basta acessar o endereço zend.localhost no seu navegador, o resultado deve ser parecido com a imagem logo abaixo.

zend2_funcionando