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

Symfony PHP Discussion :

Petit conseil sur la gestion des Entity


Sujet :

Symfony PHP

  1. #1
    Membre actif Avatar de grinder59
    Inscrit en
    Septembre 2005
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 707
    Points : 215
    Points
    215
    Par défaut Petit conseil sur la gestion des Entity
    Bonjour,

    Je suis en train de me former à Symfony2, j'en suis au Entities. Dans mon bouquin il est écrit que la déclaration des Entities doit se faire au niveau des bundles. Par exemple pour un bundle de blog on déclare les Entities Article, Commentaires...

    J'imagine donc que pour une application composées de plusieurs bundles, je vais avoir des Entities déclarées un peu partout. Est-ce pratique ? Ne vaudrait-il pas mieux de déclarer mes entités dans bundle commun (CommonBundle) ?

    Merci de vos conseils

  2. #2
    Membre du Club Avatar de Parmifer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2014
    Messages : 39
    Points : 51
    Points
    51
    Par défaut
    Il faut que tu vois tes entités comme des classes (si tu as déjà fais un peu de POO).

    En fait, tout va dépendre de l'utilisation que tu fais de tes entités.

    Normalement chaque entité dois rester dans le bundle qui lui correspond mais il est possible d'avoir besoin d'une entité d'un peu partout.
    Dans ce cas, oui tu peux faire un CommonBundle où tu ranges les entités "polyvalentes"(je n'ai pas trouvé mieux...), ça peut être un bon moyen de les regrouper.

    Après, certains te dirons que c'est mal (ce qui n'est pas faux) donc à utiliser avec parcimonie.

    Par exemple, sur un projet que j'ai traité, j'avais deux Bundles pour mes entités principales (Formation, Compétence) et un Bundle utilisateur. Je n'avais pas d'entités communes aux deux autres donc pas besoin d'un quatrième Bundle.

    En gros : tu fais comme tu veux mais évite de tout mettre dans un Bundle, ça sera crade quand même.
    Parmifèr

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while(cafe <= 0)
    {
        developper = false;
    }

  3. #3
    Membre actif Avatar de grinder59
    Inscrit en
    Septembre 2005
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 707
    Points : 215
    Points
    215
    Par défaut
    merci de ton retour ! et j'adore ta signature !

  4. #4
    Membre du Club Avatar de Parmifer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2014
    Messages : 39
    Points : 51
    Points
    51
    Par défaut
    Ce fut un plaisir ! Merci !
    Parmifèr

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while(cafe <= 0)
    {
        developper = false;
    }

  5. #5
    Membre expérimenté Avatar de Nico_F
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Points : 1 310
    Points
    1 310
    Par défaut
    Hello, ton bouquin dit juste : les entités se déclarent par bundle.

    Par contre je ne comprends pas d'ou vient cette mode de mettre des entités utilisées par plusieurs bundles dans un bundle dit "commun".
    Je ne comprends pas non plus pourquoi les gens sont si radins en bundle dans un projet.

    Je travaille sur un projet qui a environ deux ans et qui comporte 25 bundles. Ca ne veut pas dire que le projet est IMMENSE : ça veut juste dire que chaque fonctionnalité est séparée dans un bundle. Et évidemment certains bundles ont besoin d'entités qui viennent d'un autre bundle : ce qui crée du couplage. En moyenne il y a entre 3 et 5 entités par bundle.

    Alors après tu as deux possibilités : tu veux devenir un esthète du code et tu estimes que chaque bundle peut être indépendant et réutilisable dans tout projet, auquel cas : une fonctionnalité = un bundle (ne s'applique qu'aux projets opensource que tu veux rendre publics). Ou alors pour palier aux problèmes de couplage tu te dis que toutes les fonctionnalités qui ont un couplage fort seront dans un bundle "Core" qui sera comme son nom l'indique le coeur de ton projet. Mais ça ne veut pas dire bundle poubelle : une fonctionnalité d'envoi de mails n'aura strictement rien à faire dans Core : elle aura sa place dans un bundle à part.

    Prenons l'exemple de Developpez.com : regarde le menu du haut : tu as un exemple de découpage en bundles.
    Forums = un bundle
    Tutos = un bundle
    Mag = un bundle
    ...

    On est bien d'accord pour dire que tu n'auras pas besoin des mêmes entités entre la fonctionnalité Forums (topic, messages, pouce vert, pouce rouge) que dans la FAQ ou la newsletter.

    Dans certains cas tu pourras aussi avoir besoin d'un message pour le forum, et un message (commentaire) pour les articles de blog, et pourquoi pas d'autres types de messages/commentaires sur d'autres entités qui sont dans des bundles différents. Qu'à cela ne tienne, nous pourrons par exemple déclarer une interface et/ou une classe abstraite de Message dans le Core qui contiendra les champs classiques (authorName, publishedAt, messageContent, etc.) et les classes filles TopicMessage pour le ForumBundle, CommentMessage pour le BlogBundle etc. auxquelles on rajoutera les attributs et méthodes spécifiques.

    tl;dr: Fais plein de bundles, mets des entités partout et partitionne ton projet : n'aie pas peur de faire mieux que deux bundles par projet

Discussions similaires

  1. Réponses: 2
    Dernier message: 31/10/2012, 16h48
  2. Petite question sur la gestion des exception
    Par Wizard50 dans le forum C#
    Réponses: 1
    Dernier message: 05/05/2010, 09h17
  3. Réponses: 5
    Dernier message: 24/08/2009, 18h22
  4. Conseils sur la gestions des erreurs en Java
    Par Clorish dans le forum Général Java
    Réponses: 8
    Dernier message: 26/03/2008, 16h03
  5. Conseil ou avis sur la gestion des statistics
    Par lenitoy dans le forum Sybase
    Réponses: 3
    Dernier message: 28/03/2007, 12h07

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