Bonjour,
Je me demande à quoi sert exactement Doctrine.
J'ai un peu cherché sur Google mais je recherche plus de précision
Car je ne comprend pas trop son utilité et son fonctionnement.
Je vous remercie d'avance de vos attention pour ma question![]()
Bonjour,
Je me demande à quoi sert exactement Doctrine.
J'ai un peu cherché sur Google mais je recherche plus de précision
Car je ne comprend pas trop son utilité et son fonctionnement.
Je vous remercie d'avance de vos attention pour ma question![]()
Bonjour
Doctrine et son petit copain Propel sont ce qu'on appelle des ORM (Object Relationnal Mappers). Comme tu le sais sûrement, les application PHP utilisent en grande majorité des stack LAMP (Linux Apache MySQL et PHP).
MySQL est une base de données dite relationnelle, ce qui signifie que les données sont rangées dans des tables liées entre-elles par des relations et des contraintes (par exemple, un étudiant à des contrôles s'exprime par une deux tables "Etudiant" et "Controles" liées entre elles par une table "Etudiant_has_Controles").
Dans la mesure où de plus en plus d'application sont écrites en PHP Orienté Object, la possibilité d'utiliser ces structures de données avec de l'objet s'est fait sentir; c'est là qu'interviennent les ORM.
Doctrine, pour ne parler que de lui, est capable de comprendre une structure de base de données exprimée dans des descripteurs YAML (YAML Ain't Markup Language) pour créer des objets qui caractérisent des vues sur les données d'une base de données.
Il devient dès lors possible d'utiliser des entités de ta base sous la forme
Ce qui est beaucoup plus confortable et surtout plus flexible que d'utiliser des requêtes classiques (désormais masquées par Doctrine qui fait tout le travail pour toi).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $etudiant = new Etudiant($id); $etudiant->setName('Roger');
Doctrine est utilisé notamment dans des framework PHP comme Symphony mais tu peux l'utiliser indépendamment. A noter tout de même que de telles fonctionnalités sont assez lourdes et que si ton modèle de base de données était déjà pourri au départ, ça n'améliorera pas les choses d'utiliser un ORM.
Les ORM sont très utiles pour les gros projets mais pour faire un site vitrine ou ce genre de chose, ce n'est pas nécéssaire.
Merci je comprends maintenant un peu mieux.
Donc Doctrine n'a rien avoir avec les bibliothèques d'abstractions destinées à communiquer avec différents SGDB ?
Doctrine se base sur de telles bibliothèques pour éviter de recoder des parties d'une manière dépendante d'un DBMS, sur une couche d'abstraction de la base de données, DBAL (pour schématiser : tu demandes à Doctrine d'insérer un objet, Doctrine regarde tout ce qu'il faut dans ton modèle et passe une requête à DBAL, qui se charge de la transcrire en SQL et de le passer au DBMS et d'en retourner les résultats à Doctrine, Doctrine qui les hydrate pour que tu puisses les utiliser dans un objet). C'est le principe de base des ORM, c'est à peu près comme ça qu'ils fonctionnent tous (parfois en une seule brique logicielle).
Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.
Créer des applications graphiques en Python avec PyQt5
Créer des applications avec Qt 5.
Pas de question d'ordre technique par MP !
Partager