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 :

Appeler un service dans un service [2.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 20
    Par défaut Appeler un service dans un service
    Bonjour à tous,

    Je développe actuellement une application web, et j'ai une question toute bête mais dont je n'arrive pas à me démêler :

    En gros, j'ai un service A et un service B.

    J'aimerais utiliser B dans A, comment faire?

    Car lorsque je fais l'habituel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $serviceB = $this->get('service_B');
    Dans ma classe ServiceA, ça ne fonctionne pas.

    Quelques indices? Ai-je des modifications à apporter dans le constructeur de serviceA ou dans le config.yml?

    Merci d'avance

  2. #2
    Membre Expert 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 : 37
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Par défaut
    Hello,

    Le $this->get('service_B'); que tu fais dans ton contrôleur est un raccourci vers $this->container->get('service_B').

    Ton contrôleur possède un attribut container qui lui permet d'accéder à tous les services. Ton service A ne l'a pas.

    Si tu veux accéder à un service, il faut soit que la classe depuis laquelle tu l'appelles possède le container en attribut (ce qui est le cas pour les contrôleurs), soit qu'il possède le service en question en attribut.
    Tu as plusieurs façon de faire : la plus commune étant d'injecter ce service B dans le service A via la configuration du service, par injection de dépendance (la 2ème méthode donc).

    Je te suggère de commencer par lire ceci : http://symfony.com/fr/doc/current/co...ion/types.html

    ++

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 20
    Par défaut
    Oui d'accord,

    donc j'ai ajouté le service B parmi les attributs du service A, je l'ai ajouté au constructeur et ai ajouté ceci au config.yml.

    Tout marche à merveille, merci.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 15/09/2014, 18h59
  2. [Flex4] multiples appels d'un même service dans une fonction
    Par polo31 dans le forum Flex
    Réponses: 5
    Dernier message: 01/08/2012, 14h54
  3. Réponses: 0
    Dernier message: 08/03/2010, 17h51
  4. Appel d'un Web Services dans php
    Par ggjedi dans le forum Services Web
    Réponses: 1
    Dernier message: 05/02/2008, 10h32

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