Submarino.com.br

Doctrine ORM, Parte II

April 29th, 2009 por xorna |

Bom, como prometido, o segundo capitulo da Saga “Doctrine ORM” vou abordar questões simples como o download da ferramenta, “instalação”, e configuração da mesma, deixando a primeira aplicação para o terceiro post, devido sua extensão.

Para baixa o Doctrine ORM é muito simples, basta acessar a página de download oficial, e selecionar a versão desejada, eu aconselho a baixar a última versão stable (atualmente 1.1.0). Após o download, descompacte o arquivo, para o uso em produção você vai precisar somente da pasta lib e de seu conteúdo é claro, tomando como exemplo o ubuntu, vamos criar uma aplicação chamada doctrineTest em /var/www (com as devidas permissões de escrita na pasta):

$ cd /var/www
$ mkdir doctrineTest
# vá até a pasta Dotrine-1.x.x
$ cp -R lib /var/www/doctrineTest
# aproveita e cria o index.php
$ touch index.php
# vamos criar uma classe para autoload
$ cd /var/www/lib
$ mkdir Util
$ touch Autoload.class.php

Justo, agora já temos o inicio de nossa aplicação salva no diretório de site do apache, vamos começar a configuração e a entender tudo isso. Abra seu editor preferido (eclipse no meu caso), abra o arquivo lib/util/autoload.class.php, vamos fazer um pequeno truque para nos livrarmos dos includes.

class Util_Autoload
{
    public function autoload($class)
    {
        $path = str_replace('_', '/', $class) . '.php';
        require_once($path);
        return true;
    }
}

Feito isso, vamos ao nosso index.php, primeiro vamos configurar nosso autoload :)

/* Adicionando a pasta libs ao include_path do php */
$include_path  = get_include_path();
$include_path .= PATH_SEPARATOR . dirname(__FILE__) . '/lib';
set_include_path($include_path);
unset($include_path);

/* registrando nossa classe autoload */
require_once(dirname(__FILE__) . '/lib/Util/Autoload.class.php');
spl_autoload_register(array('Util_Autoload', 'autoload'));

Legal, a essa altura qualquer classe que quisermos carregar dentro de libs estará disponível, agora vamos abrir nossa primeira conexão com o banco de dados (no exemplo MySQL):

$dsn = 'mysql://username:password@127.0.0.1/doctrineTest';
$manager = Doctrine_Manager::getInstance();
$conn = $manager->connection($dsn, 'master');

Bom, agora já conseguimos conectar a aplicação com o banco de dados, para finalizarmos este capitulo vamos fazer um pequeno teste de conexão, certifique-se que o usuário no qual você está conectando tenha permissões de CREATE no banco de dados. Vamos criar uma tabela e depois inserir dados nela:

$conn->export->createTable('teste', array('nome' => array('type' => 'string')));
$conn->execute('INSERT INTO teste (nome) VALUES (?)', array('blogdoxorna'));

Legal, tabela criada, uma linha inserida, agora vamos ler pra ver se é verdade que tá gravando (claro, comentando a linha do create pra não dar pau!) ;)

$st = $conn->prepare('SELECT * FROM teste');
$st->execute();
$resultset = $st->fetchAll();
var_dump($resultset);

O que deve aparecer aí no browser é mais ou menos isso:

array
  0 =>
    array
      'nome' => string 'blogdoxorna' (length=11)
      0 => string 'blogdoxorna' (length=11)

Bom, encerro aqui o meu post, e lembrando que se eu sair vivo do #NOB #TwitteirosDeJoinville no Biergarten, eu posto a terceira parte ainda hoje 29/04 a noite ;)

Compartilhe e socialize:
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • E-mail this story to a friend!
  • LinkArena
  • LinkedIn
  • Live
  • Netvibes
  • Socialogs
  • Technorati
  • ThisNext
  • Yahoo! Buzz
  • YahooMyWeb

4 comentários, mais um não seria um problema.

  1. Realmente o Doctrine é um ótimo ORM.. eu uso ele e gosto bastante, claro que de vez em quando temos uns probleminhas, mas na média ele é ótimo. Escreva mais sobre ele ai…

    abraço

  2. xorna says:

    opa, a integração é necessária, mas é tranquila, como ambos seguem os mesmo padrões de codificação, fica fácil…

  3. JR says:

    Parabens!

    A muito tempo estava procurando um material bem simples como este para iniciar com o Doctrine.

    Porém… Tá faltando agora o Doctrine ORM, Parte III!

    Já estamos em 19 de Junho e você ficou de publicar a terceira parte em 29 de Abril.

    FLW!

  4. xorna says:

    Boa, fiquei um tempo parado, blog desatualizado, porém estou me preparando para retomar esses posts, principalmente Doctrine, o qual estarei montando um material mais completo como palestra e mini curso…

Deixe seu recado

Spam Protection by WP-SpamFree

Clicky Web Analytics