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 :

Comprendre la logique de Symfony2


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 27
    Par défaut Comprendre la logique de Symfony2
    Bonjour à tous,

    Je suis en train d'étudier Symfony 2. Ayant déjà les base de la version 1, je me suis vite rendu compte que malheureusement, pas grand chose allait me servir.
    J'ai aussi des bonnes notions objet d'application, Java, C#, ORM, donc le framework en lui même me fait pas trop peur, j'aimerai être sûr de cerner la logique de celui-ci. Même si à cette question, j'entends beaucoup la réponse "c'est à toi de voir, suit ta propre logique", je trouve que c'est quand même oublié que Symfony 2 à été construit pour le web, pour créer des sites, et qu'avant d'établir sa propre logique, celle du framework doit être déjà bien digérée.

    Donc je me pose des questions basique. Je vais prendre un exemple, un site qui va permettre au gens de s'inscrire/se connecter, poster des photos, et les commenter.

    Je me dis qu'il y a trois éléments de base dans mon site. L'utilisateur, les photos, et les commentaire.

    L'utilisateur et les commentaire ont déjà leur bundle, FOSUserBundle et divers bundle qui permettent de gérer des commentaires, donc à moi de faire mon choix.
    Pour les photos, étant un élément important du site, je me dis que je vais créer un bundle qui permettra de les gérer, de les traiter, les afficher à l'aide de plusieurs galeries, etc...

    Déjà première question, est-ce que je peux créer mon site avec ces trois bundles?

    Si je pars avec cette idée, une fois mes bundle créer (dont deux héritent de bundle déjà existant qui eux seront installés dans le vendor du projet symfony2), je crée mes entités, dans chacun de mes bundles.
    Je lie mes bundles grâce aux propriétés communes des entités avec les annotations.

    Par exemple, les entités photos vont avoir comme propriété leur url, leur tailles,etc... Mais aussi une propriété Utilisateur du bundle Utilisateur. Pareil pour l'entité commentaire, qui en plus de ses propriétés, va avoir une propriété photo pour savoir à quelle photo s'adresse les commentaires, et aussi une propriété Utilisateur, pour savoir qui post.

    Donc en gérant mes propriétés comme celle ci, je devrais une fois ma BDD générée, me retrouver avec un schéma classique de tables, avec leur dépendances.

    Mais ensuite, comment se passe le développement?
    Pour un simple affichage de la home page avec formulaire d'inscription, comment je suis censé m'organiser, quel bundle va être centrale par rapport aux autres?
    Au finale je me retrouve avec trois parties bien précises, mais pas de bundle "centrale".

    Donc là je me dis que j'ai qu'a faire un bundle "SiteBundle". Celui-ci sera centrale, donc je pourrai afficher mes pages, définir des routes, créer mon layout et importé des templates des autres bundles. Au niveau des entités par contre, je sais plus quoi faire... Je peux créer mes controllers dans celui-ci, recevoir les requêtes de mon site, créer et récupérer mes entités, donc logiquement je me dis, pourquoi pas.
    A condition que j'arrive à lié ce bundle avec les autres, pour pouvoir communiquer avec eux.

    Mais honnêtement, avec les essaies que j'ai fait et tout ce que j'ai lu, j'ai du mal à croire que c'est une bonne solution, qui m'apportera plus de facilité que la version 1.4 au final.

    Donc du coup je me dis que je loupe quelque chose. Que je passe à côté de la philosophie de Symfony2. Parcequ'au final ce qui me dérange, c'est principalement le fait que rien n'a l'air d'être centraliser avec les bundles.

    Donc voilà mon gros problèmes vient du fait qu'aucun exemple concret, un tuto par exemple, explique ce qu'il faut faire avec Symfony2. J'aimerai bien avoir le temps de me lancer dedans et de tester plein de possibilité, mais j'ai malheureusement pas le temps, et en plus Symfony2 à l'air d'être suffisamment complexe et profond pour ne pas déjà galérer à comprendre le principe de base.

    Je me rend compte que je pose même pas de question au finale

    Si quelqu'un veut partager sa vision, m'expliquer là ou je foire, là ou je ne doit pas penser comme ça, débattre de ses difficultés ou de ses idées, ça serait cool

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 772
    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 772
    Par défaut


    Commençons par applaudir la démarche : !

    Citation Envoyé par Chycken Voir le message
    Déjà première question, est-ce que je peux créer mon site avec ces trois bundles?
    Tu as trouvé les briques de base nécessaires pour créer ton application, il faut ensuite les relier (trois briques qui restent dans le tas ne feront pas une maison, il faut un ciment pour les relier : un nouveau bundle, le tien, celui de ton application). Notamment, c'est dans ce bundle que tu planqueras les entités requises par le FOSUserBundle. Inutile d'en hériter ou de modifier quoi que ce soit au début, leurs fonctionnalités te suffiront. Inutile d'amener de l'héritage là où la composition est parfaite. Tu créeras aussi les entités requises pour les photos dans ce bundle.

    Dans ce bundle très personnel, tu auras une série de contrôleurs, qui appelleront des templates, ce qui sera envoyé finalement au client. Ce sera le centre de ton application (du moins, d'une partie : tu peux importer une série de bundles et brancher leurs contrôleurs depuis la configuration de l'application). Au final, chaque bundle aura son petit bout de responsabilité : soit la fonctionnalité d'un bundle préexistant te suffit, auquel cas tu renvoie l'utilisateur direct sur ses routes (avec un peu de configuration pour gérer l'apparence, le template Twig parent) ; soit il n'y a pas de contrôleur pour ce bundle, il ne fait que fournir de la logique (FOSUserBundle), c'est à toi d'écrire du code pour l'appeler, faire quelque chose d'utile. Rien ne sera centralisé, si ce n'est la configuration de l'application, qui va dire quels bundles charger, les routes à gérer, etc.
    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 !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 27
    Par défaut
    Merci pour ta réponse

    Donc je me rend compte que je ne suis déjà pas à côté de la plaque, bonne nouvelle

    Par contre, quand tu dis:

    Tu as trouvé les briques de base nécessaires pour créer ton application, il faut ensuite les relier .

    Notamment, c'est dans ce bundle que tu planqueras les entités requises par le FOSUserBundle.

    Tu créeras aussi les entités requises pour les photos dans ce bundle.
    Je ne comprend pas comment le faire techniquement. Pour l'instant la seul façon que j'ai vu pour lié des bundles, et de justement mettre des propriétés d'une entités d'un autre bundle (namespace) lors de la creation de l'entité d'un premier bundle.

    Ainsi si j'ai dans mon UtilisateurBundle ma fonction:

    getComments();

    Celle ci va me renvoyer une entités Commentaire du bundle CommentBundle.

    Mais donc quand tu me dis "c'est dans ce bundle que tu planqueras les entités requises par le FOSUserBundle. "
    Que veux tu dire par planquer?
    Une fois mon UtilisateurBundle crée, hérité de FOSUserBundle, en suivant les tuto de symfony, je crée "à la main" une entité que je nomme "FOSUser.php dans mon dossier /Entity, on a donc:

    src/projet/UtilisateurBundle/Entity/FOSUser.php

    Ensuite je crée mes entités avec :

    php app/console doctrine:generate:entities MyApp

    Bon déjà j'ai du mal à comprendre, je pensais déjà avoir crée une entités, rien ne change, et ça m'a juste rajouter un fichier .dll "FOSUser.php~" dans mon repertoire /Entity. Fin bref passons à la suite le problème n'est point là.

    J'update ma database:

    php app/console doctrine:schema:update --force

    Là je go voir ma DB, et ça m'a crée une belle table avec plein de champ, je retrouve un peu du SFguard de Sf1.4, donc cool. Par contre mon entité crée à la main n'a pas bougé d'un poil, bizarre. Mais je dois mal faire quelque chose ou louper un truc.

    Par contre mon entité est bien dans mon bundle UserBundle, pour l'instant pas de lien avec mon SiteBundle central.
    Si je garde la même logique avec mes autres Bundles, j'aurai le même soucis.

    Don je te recite :

    Tu créeras aussi les entités requises pour les photos dans ce bundle
    Et je te demande: Comment et pourquoi créer des entités qui devrait appartenir à mon PhotoBundle dans mon SiteBundle?
    A moins d'avoir mal compris et qu'en fait tu me disais de ne pas créer de PhotoBundle.

    J'ai passé ma soirée à essayer de voir plus clair, notamment en étudiant un peu le système d'injection d'indépendance ou autre, mais tant que je n'arriverai pas à visualiser le "côté simple", le coté plus profond ne me donnera pas vraiment de réponse.
    Et j'ai vraiment envie de comprendre le mécanisme de connexion avec les bundles, parcequ'au finale, c'est vraiment ça qui me coince!

Discussions similaires

  1. Méthodes/outils pour comprendre logique programme?
    Par yetanotherlogin dans le forum Modélisation
    Réponses: 2
    Dernier message: 23/07/2010, 11h59
  2. Evalutation d'expression logique/booleenne
    Par eesteban dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 16/06/2004, 14h58
  3. Port parallèle et ou logique
    Par declencher dans le forum Langage
    Réponses: 2
    Dernier message: 05/06/2004, 19h02
  4. [Procédure][java] A n'y rien comprendre
    Par Stessy dans le forum SQL
    Réponses: 2
    Dernier message: 18/03/2004, 15h05
  5. Un lecteur logique caché!!!
    Par Cyberman dans le forum Composants
    Réponses: 3
    Dernier message: 05/10/2003, 23h16

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