Utiliser PDO comme service dans un projet Symfony

le système de services est une fonctionnalités très intéressante de Symfony, elle permet d'exécuter une certaine fonction à plusieurs endroits différents dans le code.

Concrètement, un service est un objet PHP qui remplit une fonction, associé à une configuration.

L'extension PHP Data Objects (PDO) définit une excellente interface pour accéder à une base de données depuis PHP.

Dans un controleur on peut initialiser la connexion à la base de données dans une fonction :

private function getDatabaseConnection(){ 
      $p = $this->container->getParameter('database.server'); 
      $pdo = new \PDO($p['dsn'], $p['username'], $p['password'], array(\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION)); 
      $pdo->query("SET NAMES 'UTF8'"); 
      return $pdo;
}

Et chaque fois on veut utiliser la base on fait un appel getDatabaseConnection().
Cette méthode fonctionne bien mais il y a mieux. On peut profiter de la puissance des services de Symfony et de pouvoir appeler la méthode native Get : get('db1') pour utiliser le service db1 qui est branché avec la base de données db1 par exemple Les détails pour configurer le service PDO et utiliser plusieurs bases de données en même temps avec un projet Symfony se trouve ici :

Handling several PDO Database connections in Symfony2 through the Dependency Injection Container with PHP

Show Comments