Ubuntu com Doctrine 2 no Zend Framework 2

O Doctrine é uma biblioteca PHP utilizada para facilitar os serviços com o banco de dados. É possível criar o site sem isso, tanto que eu não a utilizava antes, mas após conhecê-la, vi que há muita coisa boa para usar e evitar trabalho. Assim meu código passou a ficar mais simples e entendível. Esse tutorial servirá para explicar como instalar o Doctrine no ZF2. Primeiro é necessário instalar o Zend Framework 2: Instalando o Zend Framework 2 no Ubuntu.

Composer.json

Edite o composer.phar para que ele busque os módulos do Doctrine. É necessário mudar os requerimentos:

{
    "name": "zendframework/skeleton-application",
    "description": "Skeleton Application for ZF2",
    "license": "BSD-3-Clause",
    "keywords": [
        "framework",
        "zf2"
    ],
    "homepage": "http://framework.zend.com/",
    "require": {
        "php": ">=5.3.3",
        "zendframework/zendframework": "2.*",
        "doctrine/doctrine-orm-module": "0.*"
    }
}

Em seguida, basta rodar o comando para instalar novamente.

php composer.phar update

Configuração

Agora é necessário “avisar” o sistema dos novos módulos. Edite o arquivo config/application.config.php Será necessário acrescentar os módulos ‘DoctrineModule’ e ‘DoctrineORMModule’.

<?php return array(     'modules' => array(
        'Application',
        'DoctrineModule',
        'DoctrineORMModule'
    ),
    'module_listener_options' => array(
        'config_glob_paths'    => array(
            'config/autoload/{,*.}{global,local}.php',
        ),
        'module_paths' => array(
            './module',
            './vendor',
        ),
    ),
);

E além disso, configurar as informações locais (config/autoload/local.php) preenchendo com as informações de seu banco de dados.

<?php return array(
     // ...
     'doctrine' => array(
        'connection' => array(
            'orm_default' => array(
                'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver',
                'params' => array(
                    'host'     => 'localhost',
                    'port'     => '3306',
                    'user'     => 'preencher',
                    'password' => 'preencher',
                    'dbname'   => 'preencher',
                )
            )
        )
    ),
);

module.config.php

Para seus módulos funcionarem, é necessário colocar namespace nos arquivos de configuração de módulo. Vamos testar com o Application. Edite /module/Application/config/module.config.php

<?php
namespace Application;
...

E no final desse mesmo arquivo, coloque o seguinte: (como último elemento do array)

//........
// Conteúdo novo
// Doctrine config
    'doctrine' => array(
        'driver' => array(
            __NAMESPACE__ . '_driver' => array(
                'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver',
                'cache' => 'array',
                'paths' => array(__DIR__ . '/../src/' . __NAMESPACE__ . '/Entity')
            ),
            'orm_default' => array(
                'drivers' => array(
                    __NAMESPACE__ . '\Entity' => __NAMESPACE__ . '_driver'
                )
            )
        )
    ),
// Fim do conteúdo novo
//........
);

E com apenas isso, já é possível utilizar o Doctrine. Vamos testar ver se funcionou.

Testando

Para verificar se instalamos direito, vamos rodar um comando:

php public/index.php

E então deve aparecer algo semelhante ao abaixo:

Zend Framework 2.4.0dev application
Usage:
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
DoctrineModule
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
DoctrineModule Command Line Interface version 0.8.0
(continua)

Se não funcionou, deixe nos comentário para irmos se ajudando :)

Quer mexer mais? Veja o básico do Doctrine2 no ZF2.

Fonte: