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