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 :

Communication inter bundle [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut Communication inter bundle
    Bonsoir,

    Supposons que demain developpez.com souhaite transformer son forum pour utiliser sf2. Sans entrer dans d'innombrables détails, on aurait au moins 2 Bundles :
    - Forum
    - User

    Parce qu'on ne veut pas réinventer encore et encore la roue, on se dit que, pour User, on utiliserait la base FOSUserBundle ... et ajouter notre surcouche (côté social par exemple).

    Naïvement, dans ForumBundle on aura une entité Post ... nécessairement associée à un user. Comment faire pour lier le Post à une entité user de NotreUserBundle ?
    Je veux dire ... le schéma du user se trouve dans NotreUserBundle ... le schéma du forum se trouve dans ForumBundle ... mais alors comment matérialiser le lien entre les tables ... les entités etc etc ? Dois-je dans ForumBundle créer une entité User qui surcharge l'entité User de NotreUserBundle ? autre moyen ?

    J'imagine qu'il faut gérer ça sous forme de service ... mais si quelqu'un à un exemple à donner ... je suis extrêmement preneur.

    Merci pour votre aide.
    "La théorie, c’est quand on sait tout et que rien ne fonctionne. La pratique, c’est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : rien ne fonctionne ... et personne ne sait pourquoi !" et malheureusement c'est souvent le cas en Développement...

  2. #2
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut


    Je viens de trouver un projet AssoManager ... qui utilise FOSUserBundle ... et qui contient son propre UserBundle ... ça devrait pouvoir répondre à mes questions ... je vais voir si c'est vraiment le cas ...

    AssoManager : https://github.com/winzou/AssoManager
    github : https://github.com/winzou/AssoManager.git


    Cela dit je suis toujours preneur de toute remarque !
    "La théorie, c’est quand on sait tout et que rien ne fonctionne. La pratique, c’est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : rien ne fonctionne ... et personne ne sait pourquoi !" et malheureusement c'est souvent le cas en Développement...

  3. #3
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut


    (décidément ... les monologues c'est mon truc ! )

    En fait oui ... ma question était un peu stupide ... dans mon entité Post il suffit de dire que le users appartient à un autre Bundle (via du oneToMany) et en précisant le chemin complet dans le "targetEntity" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php
    namespace ME/ForumBundle/Entity;
    ...
    class Post
    {
      ...
      /**
      *@ORM\ManyToOne(targetEntity="ME\UserBundle\Entity\User", inversedBy="posts")
      **/
      protected $user;
    ... je vous épargne la déclaration inversée ...

    le hic c'est que ça crée un lien FORT entre mes deux entités ... en effet, idéalement, je souhaiterais que ME\UserBundle\Entity\User ne contienne aucune référence à ME\ForumBundle\Entity\Post (via l'attribut posts).

    Comment faire ?

    Au sein de ME\ForumBundle\Entity créer un User qui surcharge le ME\UserBundle\Entity\User ? ou autrement ?


    Merci
    "La théorie, c’est quand on sait tout et que rien ne fonctionne. La pratique, c’est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : rien ne fonctionne ... et personne ne sait pourquoi !" et malheureusement c'est souvent le cas en Développement...

  4. #4
    Inscrit
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Points : 476
    Points
    476
    Par défaut
    Salut,

    C'est juste trop marrant que tu sois tombe sur mon projet Tu l'as trouve comment ?

    De toute facon c'est pas un bon exemple parce que je decouple pas les bundles (trop relou). Mais sinon voici la theorie :
    - Tu fais un bundle Bleys\ForumBundle qui est ton bundle forum "aseptise". Dedans, tu fais une entite Post non complete, une mappedsuperclasse (cf celle de FOSUserBundle par exemple). L'idee c'est que c'est au developpeur qui utilise ton bundle d'heriter de cette mappedsuperclasse et de rajouter sa liaison avec la classe User de son choix.
    - Tu utilises le bundle FOS\UserBundle
    - Tu fais un bundle ME\UserBundle qui herite de FOS\UserBundle parce que 1/ t'es oblige pour concretiser la classe User de ce bundle et 2/ tu peux le personnaliser (ici c'est ce que j'ai fait dans mon Asso\UserBundle)
    - Tu fais un bundle ME\ForumBundle qui herite de Bleys\ForumBundle parce que 1/ t'es oblige pour concretiser la classe Post en rajoutant ta liaison avec ton User et 2/ bah tu peux la personnaliser aussi si tu veux.

    (Voila pourquoi je decouple pas mes bundles )

    L'idee generale dans Bleys\ForumBundle c'est de se dire "Bon voila, ce bundle considere qu'un User existe avec telle et telle fonctions (genre getUsername, getEmail), mais il ne l'implemente pas"

  5. #5
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut
    Salut,

    Ok je vois ce que tu veux dire ... en fait il faut rajouter une couche intermédiaire si je souhaite faire quelque chose de bien découplé ... mais ce qui veut dire pour un petit projet peu utile ...

    Merci pour ton intervention.

    Comment je suis tombé sur ton projet ? Sur symfony2bundles ... en triant par les dates de modification les plus récentes ... j'ai vu qu'il utilisais FOSUserBundle ... j'ai pas cherché à aller plus loin.

    Merci
    "La théorie, c’est quand on sait tout et que rien ne fonctionne. La pratique, c’est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : rien ne fonctionne ... et personne ne sait pourquoi !" et malheureusement c'est souvent le cas en Développement...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [windows] Communication inter-processus
    Par litbos dans le forum Windows
    Réponses: 6
    Dernier message: 16/01/2007, 09h13
  2. [débutant] Communication inter-processus
    Par tooney dans le forum C
    Réponses: 3
    Dernier message: 29/12/2005, 20h48
  3. Communication inter-fenêtre
    Par NeoMan dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 01/08/2005, 14h35
  4. communication inter-processus
    Par benoit70 dans le forum MFC
    Réponses: 1
    Dernier message: 14/04/2005, 09h55
  5. [MFC] communication inter exe
    Par Kevgeii dans le forum MFC
    Réponses: 2
    Dernier message: 06/01/2004, 16h47

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