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 :

Partir sur de bonnes bases


Sujet :

Symfony PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 18
    Points : 32
    Points
    32
    Par défaut Partir sur de bonnes bases
    Bonjour

    Je me penche actuellement sur symfony2 car il était prévu un gros travail de réorganisation des sites dans ma société pour la mise en commun du code.
    Je me retrouve aujourd'hui avec une grosse problématique que je vais tenter de vous présenter le plus clairement possible.

    Nous avons 3 sites d'e-commerce sous symfony 1.4 qui ont un code très très proche. Les différences se retrouvent majoritairement dans les app.yml, les css et les images. Il existe aussi quelques différences dans les modules mais elles ne sont pas énormes.

    J'aurais aimé pouvoir gérer ces différences de modules avec des héritages.
    Malheureusement, symfony 1.4 n'est pas vraiment étudié pour même si j'ai réussi à trouver une pseudo solutions avec un système de plugin.

    J'étais donc parti dans une idée de créer plusieurs projets. Un contenant le code de base et 3 autres qui à l'aide des externals svn récupérerait le code du projet commun sauf pour les parties de modules qui ont des différences.

    Mais avant de me lancer, je décide de jeter un coup d'oeuil à symfony2 car d'ici à ce que le dev soit terminé, je pense que S2 sera dispo en version stable.
    Je m’aperçoit alors que dans cette version, l'héritage de controlleurs et de templates est possible! Ô joie!

    Seulement ma problématique se pose pour l'organisation.
    Dois je créer plusieurs projets ou plusieurs applications qui partageraient le bundle commun ou plusieurs bundle dans une même application?

    Dans le cas de plusieurs bundle, comment faire en sorte que la page d'accueil soit différente en fonction du nom de domaine?

    Bref, si vous avez quelques avis sur la question, merci de me les exposer.

    Autre chose qui n'a rien à voir, où mettons ce qui étaient présent dans les app.yml?

    Merci à vous!

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    195
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2010
    Messages : 195
    Points : 511
    Points
    511
    Par défaut
    En prenant ton exemple il faudrait que tu crées une application pour chaque site de E-commerce et faire Un ( ou plusieurs ) Bundle que partagerais chacune de ces applications. Ce qui avais dans app.yml est à présent dans config.yml ( ou un autre fichier que tu inclus dans config.yml ) et dans config.yml tu pourrais par exemple spécifiais les templates de chacune des actions ( par exemple ou plein d'autre truc ). Le code de ce bundle https://github.com/FriendsOfSymfony/UserBundle est assez instructif dans les possibilités et comment le mettre en place que peut avoir un bundle généraliste fournissant une fonctionnalité ( du genre : gestion des utilisateurs et des groupes )

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 18
    Points : 32
    Points
    32
    Par défaut
    Merci pour le conseil.

    Cependant, d'après ce que j'ai compris, l'héritage se fait automatiquement à partir du moment où les templates sont placé dans le bon sous-répertoire de app.
    Si je fais plusieurs appli, ce ne sera donc pas possible non?

  4. #4
    Membre actif

    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2009
    Messages : 91
    Points : 223
    Points
    223
    Par défaut
    Salut,

    Tu peux facilement créer trois config d'application différentes et utiliser des bundle en commun et d'autres bundles non ainsi que des templates différents.

    La plus grosse partie du boulot sera la création de services au départ, je pense qu'on va tous un peu galérer au début à moins de bosser chez Knplabs , afin de garder une certaine refactorisation et l'esprit bundle de Symfony.

    Le lien fournit par gilwath est en effet une bonne source d'inspiration pour tester et prendre de la graine.

    Bon dev

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 18
    Points : 32
    Points
    32
    Par défaut
    Encore une fois merci.

    Voici ce que j'ai en tête, n'hésitez pas à me dire si je pars mal.
    Créer un premier site (une première appli) en tentant de mettre tous dans mon bundle commum.
    Attaquer le deuxième en récupérant le bundle commun et faire les ajustements coté mise en commun afin que le troisième se passe au mieux.
    L'ensemble du modèle se retrouvera dans un autre bundle afin de pouvoir utiliser celui ci pour la quatrième application : l'admin des 3 sites.
    Dans le répertoire web, ajouter un lien symbolique pour les 4 applications (3 sites + admin) afin d'y partager les fichiers téléchargés que ce soit par les clients ou par le service client.

    L'idée d'un bundle uniquement pour le model est il une bonne idée?

  6. #6
    Membre actif

    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2009
    Messages : 91
    Points : 223
    Points
    223
    Par défaut
    Créer un premier site (une première appli) en tentant de mettre tous dans mon bundle commum.
    Bon déjà tu pars mal, évidemment tu peux faire un bundle avec tout mais le but est que par exemple :

    gestion des articles -> 1 bundle
    gestions des clients -> 1 bundle
    gestion de la newsletter -> 1bundle

    .....

    .cwx

  7. #7
    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
    Je sais pas trop si c'est vraiment bien de spécialiser autant les bundles. Car ces fonctionnalités sont beaucoup trop dépendantes les unes des autres, alors tu as 2 solutions :
    * Soit tu fais 3 bundles qui dépendent tellement les uns des autres que finalement tu perds la logique et l'interet "bundle"
    * Soit tu travailles beaucoup plus pour essayer de faire des bundles ultra générique et hautement configurable, mais finalement, est-ce que ca en vaut le coup ?

    Regarde le code de UserBundle, si tu devais faire toi même la gestion des users, le code serait 1000 fois plus simple.

    Je sais qu'en théorie c'est bien, que sur le papier c'est beau, etc. Mais j'avoue me poser des questions sur le côté pratique de la chose.

  8. #8
    Membre actif

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2008
    Messages : 186
    Points : 234
    Points
    234
    Par défaut
    Citation Envoyé par winzou Voir le message
    Je sais pas trop si c'est vraiment bien de spécialiser autant les bundles. Car ces fonctionnalités sont beaucoup trop dépendantes les unes des autres, alors tu as 2 solutions :
    * Soit tu fais 3 bundles qui dépendent tellement les uns des autres que finalement tu perds la logique et l'interet "bundle"
    * Soit tu travailles beaucoup plus pour essayer de faire des bundles ultra générique et hautement configurable, mais finalement, est-ce que ca en vaut le coup ?
    Personnellement je pars du principe de créer plusieurs bundles pour chaque besoin:
    -gestion des articles -> bundle
    -gestion des news -> bundle
    -gestion système de vote -> bundle
    -etc, et grâce à l'injection de dépendance tu gères facilement les dépendances.

    Après ça vaut le coup je pense, ton bundle Article et News tu vas surement les réutiliser et t'auras juste à l'intégrer. Enfin moi je vois ça comme ça ^^

  9. #9
    Membre actif

    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2009
    Messages : 91
    Points : 223
    Points
    223
    Par défaut
    Je sais pas trop si c'est vraiment bien de spécialiser autant les bundles. Car ces fonctionnalités sont beaucoup trop dépendantes les unes des autres
    D'où la philosophie de sf2 : Injection de dépendances (services)

  10. #10
    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
    Dans injection de dependance, il y a toujours dependance :p

    Plus serieusement, je me suis jamais vraiment penche sur le probleme, donc je ne demande qu'a vous croire. Par exemple, comment bien gerer les dependances d'un bundle de vote : dependance avec le User qui vote, avec l'objet pour lequel on vote (un article, un produit, etc) ? Comment gerer l'integration des templates : le systeme de vote devra surement faire un lien vers la page du produit, il faut connaitre la route mais aussi ses parametres (/show/{productId} ou /show/{productSlug} ?).

  11. #11
    Membre actif

    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2009
    Messages : 91
    Points : 223
    Points
    223
    Par défaut
    Tu peux créer un service Vote par exemple qui aura besoin effectivement de ces arguments (pour qui on vote, pour quoi on vote).

    En utilisant une application orientée services, tu peux "facilement" créer un bundle Vote à qui tu pourras passer un objet Produit pour lequel tu votes ou un objet Tutoriel si tu l'emploies dans une autre application.

    Je vais prendre un exemple concret : le FOSUserBundle, cette application a bien une dépendance : elle a besoin d'un moteur de template pour afficher ses vues, mais elle fonctionne aussi bien peu importe le moteur de template que tu veux employer.


    J'ai mis "facilement" entre guillemets car ceci change vraiment notre façon de raisonner et de coder, je pense qu'au début ça va pas être facile.
    Sans les mettre en haut du lot, FOS fait vraiment du bon boulot et est une bonne base de code afin d'essayer de réaliser nos premiers Bundles en attendant je l'espère un bon tuto complet de la part de Sensio.

    En fin, je pense que de petits bundles seront plus facilement gérables et "updatables" mais cela l'avenir nous le dira.

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 18
    Points : 32
    Points
    32
    Par défaut
    A mais du coup dans mon cas d'une gestion multisite, je vais voir le nombre de bundle exploser.
    Si je ne prends que le panier ->
    1 bundle pour la partie commune du panier.
    3 bundle pour la perso du panier (1 par site).

    Ca ne risque pas de faire lourd?
    Et encore que si on cherche la réutilisabilité, il faudrait en théorie que je fasse 1 bundle panier générique -> 1 bundle qui se servira du panier générique et qui ajoutera les fonctionnalités communes à mes trois applis - > 1 bundle pour le panier de chaque site.

  13. #13
    Membre actif

    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2009
    Messages : 91
    Points : 223
    Points
    223
    Par défaut
    Qu'appelles-tu par la perso du panier?

    Evidemment si tu veux avoir trois paniers différents ca devient pas mal.
    Par contre un panier avec toutes les fonctionnalités en tant que bundle prin
    cipal et définir les fonctionnalités que tu veux ou ne veux pas dans les fichiers config de ton app serait plus judicieux.

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 18
    Points : 32
    Points
    32
    Par défaut
    En fait les 3 paniers sont très proche.
    Mis à part l'affichage qui comme vous vous en doutez est différent, certaines fonctionnalités peuvent être ajouter ou supprimer (ok, pour le fichier de conf) mais d'autres fonctionnent de façons légèrement différentes.
    Pour prendre un exemple (je suis pas dans le cas à ce jour mais on vient de m'annoncer que ça n'allait pas tarder), un panier pour particulier et un autre pour pro.
    Mis à part les différences de présentation, on gère les avoirs pour les pro, pas pour les particuliers mais il faut également que les prix affichés soient dans un cas HT et dans un autre TTC et pour finir les codes promo ne fonctionnent pas le même façon.

    C'est plus pour illustré mon propos qu'une vrai étude de cas mais dans un cas comme celui-ci, comment aborderiez vous la problématique?

    Merci

  15. #15
    Membre actif

    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2009
    Messages : 91
    Points : 223
    Points
    223
    Par défaut
    Je ne pourrais te dire comme cela sans voir le cahier de charges afin de vraiment comparer les différences des paniers.

    Pour l'affichage, si on reste bien sémantique tu peux overrider les templates dans ton dossier /app1 ou app2 en fonction des changements.

    Pour les prix, une option dans ton fichier de config du genre :

    devrait faire l'affaire avec une condition dans les templates.

    Pour la gestion des codes promos, sans connaitre vraiment le système que vous utilisez je pencherais pour un bundle séparé.

    Pour la gestion des avoirs, je ne sais pas ce que cela signifie et donc ce que cela représente en charge de code. (Je me doutes plus ou moins de ce que c'est mais ca peut vouloir dire tout ou rien)

    Maintenant attention ceci n'est qu'un avis, sans cahier de charges de l'application, un avis basé sur sf2 qui est encore en pleine évolution / amélioration.

    Et encore un grand facteur que je ne connais pas : deadline ? Si tu me dis fin juillet je te dis sf1

  16. #16
    Membre expérimenté Avatar de nathieb
    Homme Profil pro
    DevOps
    Inscrit en
    Mai 2004
    Messages
    1 057
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DevOps
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 057
    Points : 1 532
    Points
    1 532
    Par défaut Indépendance
    Bonjour,

    Ton fil conducteur indépendamment de SF2, est l'organisation de tes sites webs. En fait tu dois penser organisation métier, découpe tes projets en blocs métiers découplés.

    Comme cité précédemment :
    - Authentification
    - gestion panier
    - Affichage
    - publicité etc ...

    Ce sont des modules ( "bundles") indépendants, ton application finale ne fera qu'utiliser ces bundles en un bundle "main", bref simplement il faut penser bibliothèque.

    Olivier
    Architecte destructurant,
    be cool, be free

    Il nous reste Debian bien sûr

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 18
    Points : 32
    Points
    32
    Par défaut
    La découpe métier, aucun souci.

    Je n'avais pas à l'esprit de faire un bundle de ce que j'aurais découpé dans sf1 en modules mais je ne pense pas que le souci soit là.

    Ma plus grosse problématique, est cette histoire d'héritage.
    Je cherche vraiment à ce que le code de chaque site hérite d'un tronc commun afin de simplifier la maintenance.
    Et dans cette optique, je cherche à trouver la meilleur solution à partir de vos avis et expérience.

    D'après ce que j'ai pu comprendre de vos réponse, je me retrouve avec 1 bundle commun pour chaque partie métier dont chaque bundle de l'application (donc du site) va hériter.

    Honnêtement, quand j'ai posté mon premier message, je n'avais pas du tout ça en tête mais je trouve les propositions qui sont faites très intéressantes et j'essaye de vraiment tout analyser avant de me lancer à fond.

    @creativecwx:

    J'ai bien conscience qu'il faudrait un cahier des charges pour répondre précisément à ma problématique et c'est pour ça que j'ai pris un cas qui n'est pas le mien. Certes, je cherche à partir sur de bonnes bases pour mon projet, mais je cherche avant tout à assimiler la philosophie de sf2.
    Il y a de très nombreuses réponses possibles au cas présenté. Ce que je veux comprendre, c'est comment aller du panier générique au panier spécifique d'un site en utilisant au mieux le système d'héritage de sf2.
    En tout cas merci encore pour vos avis.

  18. #18
    Membre expérimenté Avatar de nathieb
    Homme Profil pro
    DevOps
    Inscrit en
    Mai 2004
    Messages
    1 057
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DevOps
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 057
    Points : 1 532
    Points
    1 532
    Par défaut TWIG et l'héritage
    Bonjour,

    Attention à la notion d'héritage avec TWIG, c'est un peu tiré par les cheveux.
    En fait, c'est très bien pour des designers. cela fonctionne exactement comme facelets pour J2EE, et paf c'est dit.

    En fait, tu définies un ou plusieurs templates principaux, ou tu définis des zones (block), ils ont une valeurs par défaut :

    La subtilité réside dans le fait que quand tu crées une nouvelle pas page
    tu appelles la layout ( template principal) que tu va décorer avec des zones de block.

    TWIG est très bien fait dans sa doc.

    Entre Doctrine, TWIG j'ai l'impression de faire du JPA/facelets j'suis presque à la maison enfin presque, il manque toujours les EJBs 3.

    Olivier
    Architecte destructurant,
    be cool, be free

    Il nous reste Debian bien sûr

  19. #19
    Membre actif

    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2009
    Messages : 91
    Points : 223
    Points
    223
    Par défaut
    @all:

    Ce qui pourrait être cool, ce serait de créer ensemble un bundle panier. On donnerait tous nos avis pour la conception ? On pourrait ouvrir un post à part sur le forum ?

    Qu'en pensez-vous ?

  20. #20
    Responsable Qt & Livres


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

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 609
    Points : 188 582
    Points
    188 582
    Par défaut
    Citation Envoyé par creativecwx Voir le message
    Ce qui pourrait être cool, ce serait de créer ensemble un bundle panier. On donnerait tous nos avis pour la conception ? On pourrait ouvrir un post à part sur le forum ?
    Il pourrait même être possible de l'héberger en tant que projet sur Dvp, c'est-à-dire avec un SVN ici, un forum dédié, un espace sur Redmine, un site Web, etc., voir http://www.developpez.net/forums/d35...t-open-source/ .
    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. [AC-2007] Partir sur de bonnes bases - gestion de legos
    Par meehan dans le forum Modélisation
    Réponses: 5
    Dernier message: 26/11/2014, 18h44
  2. Partir sur de bonnes bases
    Par meehan dans le forum Modélisation
    Réponses: 7
    Dernier message: 17/08/2009, 22h23
  3. [XML/XSL] Est ce que je pars sur une bonne base ?
    Par dinbougre dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 04/12/2004, 00h31
  4. Réponses: 7
    Dernier message: 08/03/2004, 16h30

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