2012-04-13 9 views
0

Ich habe Probleme Symfony2 Dienste zu verstehen. Ich habe überall viel gelesen (einschließlich einiger hier in SO), aber keiner scheint es vollständig zu erklären.Symfony2 Service Struktur

Angenommen, ich habe ein Bündel A und ein getrenntes Bündel B. Ich möchte, dass die B-Funktionalität für das A-Bündel verfügbar ist. Ich möchte B in den Servicebehälter injizieren, damit A es benutzen kann.

Welches Paket sollte ein Services-Verzeichnis haben? Welcher sollte eine Konfigurationsdatei haben? Bei Bedarf beides? Und wo geht die Erweiterung hin? Warum?

Antwort

1

Lesen Sie diese beiden Fragen und meine Antworten auf diese zuerst:

Sie sprechen app Unter der Annahme, bestimmte Bündel, schlage ich vor, nur ein Bündel mit und halten Sie die Dienste aus. Dann könnten Sie Ihre Dienste auf verschiedene Weise registrieren:

  • Direkt im config.yml,
  • ein extension class in Ihrem AppBundle Erstellen oder
  • Via Anmerkungen von JMSDiExtraBundle - das ist, was ich persönlich bevorzugen.
+0

Danke für die Info. – phasmatis

3

Bundle B benötigt eine Extension, um die Datei services.xml zu laden.

Bundle B benötigt einen Eintrag in seiner Datei services.xml, um den Dienst zu definieren.

Bundle B enthält das Verzeichnis Services, das Ihre Serviceklasse enthält, die die gewünschte Funktionalität bietet.

Bundle A erfordert nichts Besonderes. Es wird in der Lage sein, den Container zu verwenden, um auf den von Bundle B offengelegten Dienst zuzugreifen. Er muss nur die Dienst-ID kennen.

Es ist verwirrend, bis Sie ein paar Dienste leisten.

+0

Danke, es macht jetzt einen Sinn. Auch wenn ich noch nicht getestet habe, ist dies bei weitem die effektivste Erklärung (wenn es korrekt ist) habe ich gelesen. – phasmatis