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.