Premiers pas avec Doctrine 2 : Database Abstraction Layer (DBAL) -Partie 1-

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)

Installer Xdebug avec XAMPP

L’intégration de Xdebug est facile. il suffit de :

  • Télécharger la dernière version du fichier .dll qui correspond à votre version de php, à partir d’ici
  • renommer le fichier en php_xdebug.dll
  • copier le sous xampp/php/ext/
  • ouvrir le fichier php.ini et décommenter les deux lignes suivantes en supprimant le point-virgule au début de la ligne :
    zend_extension = « \xampp\php\ext\php_xdebug.dll »
    xdebug.remote_enable = On
  • Redémarrer apache

Voila c’est fini Xdebug est installé