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 : controller et services [2.x]


Sujet :

Symfony PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Avril 2014
    Messages : 6
    Points : 5
    Points
    5
    Par défaut comprendre : controller et services
    Bonjour,

    je suis débutant en Symfony et après avoir lu les différents tutoriels j'aimerais avoir quelques éclaircissements sur le contrôleur et les services.
    En effet, il faut limiter le code dans les contrôleur à l'aide des services.

    (1) déjà, pourquoi [B]techniquement [/B ]faut il utiliser des services dans un contrôleur, pourquoi dans un contrôleur il doit y avoir peu de code ? techniquement c'est quoi le problème ?

    (2) ça marche comment techniquement parlant un service ?
    prenons l'exemple d'un contrôleur qui fait appel à un service pour récupérer des données.
    le contrôleur fait appel au service, attends celui-ci une réponse (le résultat des requêtes) ensuite il redirige. bien ça ?

    (3) disons que j'ai plusieurs actions dans mon contrôleur, chaque action fait appel à plusieurs requêtes doctrine et des créations de formulaire avec formbuilder
    donc dois je faire un service par requêtes ? et par formBuilder ?
    (je ne vois pas comment on peut mutualiser ce genre de chose)



    merci d'avance

    ps: répondez svp avec le numéro de la question

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    1 - Ce n'est pas une raison technique, c'est une raison architecturale pour mieux organiser le code, faire en sorte qu'il soit facile à maintenir, à tester et à réutiliser. Cela implique que chaque unité de code (classe, méthode) ait une seule et unique responsabilité (dans la mesure du possible évidemment, c'est une recommendation, pas une loi). Le rôle du controleur est de prendre une requête HTTP et de retourner une réponse HTTP. Tout ce qui se passe entre les deux ne le regarde pas, il doit donc le confier à d'autres classes. De plus, en règle générale, moins il y a de code dans une unité (classe, méthode), plus cette unité est facile à tester et moins elle a des dépendances, et tout cela favorise une certaine qualité de code. Tant qu'on ne va pas dans l'extrême naturellement.

    2 - Dans la terminologie symfonienne, un service est une unité de code qui n'appartient pas aux fonctionnalités métiers, et qui peut être utilisé un peu partout dans l'application. Exemple: si tu as un blog, les fonctionnalités métiers sont les classes qui représentent un billet, une catégorie, etc... Sans ces fonctionnalités, tu n'as pas de blog. Les "services" sont les fonctionnalités comme la gestion de la connexion à une base de données, ou l'envoi d'emails: tu peux les utiliser aussi bien quand tu crées un billet que quand tu publie un billet ou quand tu valides un commentaire. Tu peux aussi les utiliser dans des cadres complètement différents: commerce en ligne, jeux, API, etc...
    le contrôleur fait appel au service, attends celui-ci une réponse (le résultat des requêtes) ensuite il redirige. bien ça ?
    C'est ça. Mais c'est ce que le controleur fait aussi bien avec des services qu'avec des objets métiers.

    3 - Qu'entends-tu par "faire un service"? Si tu veux dire appeler un service, oui, tu dois le faire. Si c'est les mêmes services à chaque fois, rien ne t'empêche de créer une méthode protected qui récupère ces services et les mets dans des propriétés de la classe. Un contrôleur n'est ni plus ni moins qu'une simple classe. Si ton contrôleur recourt à trop de services, peut-être faut-il penser à déplacer ces fonctionnalités dans une autre classe que tu utiliseras ensuite comme ... service.

  3. #3
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    très bonne explication

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Avril 2014
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    merci [B]stilefy [/B ]pour ces renseignements. Je comprends mieux maintenant.

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

Discussions similaires

  1. [GRID CONTROL] Configuration Services et Systemes
    Par obi3945 dans le forum Administration
    Réponses: 17
    Dernier message: 29/01/2010, 04h22
  2. Controle des services sous windows
    Par ArKam dans le forum C++
    Réponses: 0
    Dernier message: 04/11/2009, 19h45
  3. Réponses: 10
    Dernier message: 14/09/2009, 17h58
  4. Réponses: 4
    Dernier message: 28/08/2008, 14h12
  5. Réponses: 7
    Dernier message: 28/07/2006, 21h21

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