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)

Advertisements

2 réflexions sur “Premiers pas avec Doctrine 2 : Database Abstraction Layer (DBAL) -Partie 1-

  1. Merci Hamma,
    J’utilise toujours la version 1.2 avec zendframework et pour être honnête, c’est juste parce que j’ai remarqué qu’il y a eu un changement majeur entre la v1.xx et la V2.xx et que j’avais la flemme pour me pencher dessus..
    J’attends la suite des article pour décider de l’utilité de la migration 😉

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s