Framework Symfony

Initiation à la prise en main de Doctrine2

Qu’est-ce qu’un ORM ?

Un ORM ou Object-Relational Mapping est une bibliothèque de classes permettant de :

  • Transformer les enregistrements d’une table de base de données relationnelle en objets -> un enregistrement devient une instance d’objet
  • Transformer des objets en enregistrements d’une table de base de données relationnelle -> une instance donne lieu à un enregistrement
  • Interagir avec les données de la base via des objets

Avantages d’un ORM

  • L’ORM masque les communications avec la base de données
  • L’ORM simplifie l’accès aux données
  • L’ORM facilite le changement de SGBDR -> seul un fichier de configuration doit être modifié
  • L’ORM permet une indépendance du code vis-à-vis du SGBDR utilisé -> langage de requêtes spécifique
  • La modification de structure de la BD au cours du développement aura un impact plus faible avec l’utilisation d’un ORM

Des ORM propres à chaque langage

Les ORM les plus connus

  • Pour .NET : NHibernate – Entity Framework
  • Pour PHP : Doctrine – Propel – EZPDO – Zend_Db_Table
  • Pour Java : Hibernate – SimpleORM – EclipseLink
  • La plupart des Frameworks MVC PHP utilisent des ORM, qu’ils soient propriétaires ou non.

Doctrine, l’ORM de Synfony2

  • Doctrine est un ORM pour PHP
  • Logiciel open source
  • Première version stable (1.0.0) sortie en 2008
  • Version actuelle : 2.4
  • Intégré dans différents Frameworks (Symfony, Zend Framework, CodeIgniter, …)

Doctrine = 2 couches (ORM et DBAL)

ORM Lien entre les objets PHP et la couche DBAL. Interface permettant de manipuler la BDD

DBAL Pont vers les différents SGBD. C’est la couche qui se connecte à la BDD, Le but de cette couche est de fournir une API unique qui comble la plupart des différences entre les différents fournisseurs de SGBDR.

Couches Doctrine

Architecture technique

Il faut définir des classes pour instancier les objets

Caractéristiques

1-Coté Doctrine :

  • Une classe qui correspond à chaque table -> Une classe = une « Entité »
  • Un fichier de mapping = correspondance entre la table et la classe
  • Un fichier de configuration qui contient les informations de connexion
  • Doctrine crée votre base de données et vos tables à l’aide des fichiers de mapping

2-Coté Application :

  • Utilisation d’objets
  • Plusieurs façons de « faire des requêtes » :  
    • Très simplement, grâce à EntityManager pour les requêtes CRUD de base
    • A l’aide du langage DQL (Doctrine Query Language)
    • Grâce à l’API SQL QueryBuilder

Sommaire

Partager cette formation avec tes amis :