IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

À quoi sert Doctrine ?


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2010
    Messages : 33
    Par défaut À quoi sert Doctrine ?
    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

  2. #2
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $etudiant = new Etudiant($id);
    $etudiant->setName('Roger');
    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).

    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.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2010
    Messages : 33
    Par défaut
    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 ?

  4. #4
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 776
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 776
    Par défaut
    Citation Envoyé par pierrehs Voir le message
    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 !

Discussions similaires

  1. A quoi sert XML-Schema
    Par Community Management dans le forum Valider
    Réponses: 20
    Dernier message: 26/01/2009, 10h52
  2. à quoi sert le délestage?
    Par r0d dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 5
    Dernier message: 06/10/2004, 15h34
  3. a quoi sert le schema dans postgres ??
    Par champion dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 13/09/2004, 11h25
  4. [info] A quoi sert ImageObserver ?
    Par FrigoAcide dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 22/03/2004, 18h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo