Depuis quelques semaines, je me préparais à me lancer dans symfony2. J’avais une mauvaise expérience avec l’intégration de doctrine2 dans codeIgniter.
Donc j’ai décidé de s’attaquer à doctrine2 avant de commencer sf2.
J’espère que cette série d’articles, sera un petit guide pour débuter avec Doctrine2.
Le début sera avec dbal (Doctrine database abstraction & access layer) car pour comprendre bien doctrine, il faut commencer du plus bas niveau.
Dbal est une couche au dessus de PDO.
Installation :
Il y a quatre méthodes d’installation : avec svn, git, pear ou télécharger le Tarball. J’ai téléchargé la version 2.0.6 dans un dossier nommé dbal, en utilisant git :
git clone git://github.com/doctrine/dbal.git d2-dbal
cd d2-dbal
git checkout 2.0.6
git submodule update --init
la commande git submodule est pour télécharger les sous modules qui sont en réalité des projets externes, par exemple doctrine-common qui fournit un ensemble d’extensions pour PHP.
Ensuite, J’ai créer le fichier loader.php qui va contenir le chargeur automatique des classes, ce fichier sera appelé ensuite dans chaque fichier qu’on va créer pour les tests.
Configuration
loader.php
Comme on a dit, le chargeur permet de faire appel automatiquement aux classes qui seront utilisées. Le class loader proposé dans la documentation officielle ne permet pas de faire fonctionner DBAL, on obtient cette erreur :
PHP Warning: require(d2-dbal/lib/Doctrine/Common/EventManager.php): failed to open stream: No such file or directory in /var/www/dbal/d2-dbal/lib/vendor/doctrine-common/lib/Doctrine/Common/ClassLoader.php on line 148
Il indique seulement comment on charge doctrine/DBAL mais pas doctrine-common qui sera nécessaire pour faire fonctionner le premier. Voici le fichier loader.php que j’ai créé :
<?php
use Doctrine\Common\ClassLoader;
require 'd2-dbal/lib/vendor/doctrine-common/lib/Doctrine/Common/ClassLoader.php';
$classLoader = new ClassLoader('Doctrine\Common', 'd2-dbal/lib/vendor/doctrine-common/lib');
$classLoader->register();
$classLoader = new ClassLoader('Doctrine', 'd2-dbal/lib');
$classLoader->register();
Connexion
La connexion est effectué à travers le class Doctrine\DBAL\DriverManager qui retourne une instance de Doctrine\DBAL\Connection. Doctrine\DBAL\Connection est un wrapper (Adaptateur).
<?php
require './loader.php';
$connParams = array(
'dbname' => 'blog_db',
'user' => 'root',
'password' => '',
'host' => 'localhost',
'driver' => 'pdo_mysql'
);
$conn = \Doctrine\DBAL\DriverManager::getConnection($connParams);
$sm = $conn->getSchemaManager();
On arrive à la fin de ce petit guide. Dans le prochain billet, on va voir comment manipuler les données (CRUD)