Die beste Methode, den ServiceManager in der Modellklasse zu verwenden?

8

Ich versuche Service Manager für meine Entitätsklasse zu verwenden, aber ich weiß nicht, wie das am besten funktioniert.

Es ist einfach für einen Controller, weil wir den Service Manager aufrufen können mit: $ this- & gt; getServiceLocator ();

Aber in meiner Entitätsklasse, selbst wenn ich ServiceLocatorAwareInterface implementiere, kann ich ServiceManager zurückholen, weil meine Entitätsklasse kein Aufruf mit dem Service Manager ist:

Was ist der beste Weg:

1 - Übergeben Sie serviceManager in meiner Entitätsklasse von meinem Controller 2 - Verwenden von ServiceManager zum Erstellen meiner Entitätsklasse 3 - ...?

Zum besseren Verständnis meines Problems ist das mein Code, der nicht funktioniert:

Meine Entitätsklasse:

%Vor%     
Emmanuel Gauthier 14.02.2013, 13:57
quelle

1 Antwort

18

Ich würde den ServiceManager nicht in Ihr Modell injizieren (obwohl Sie es können). Ich würde lieber den ServiceManager dazu bringen, Ihr Modell für Sie zu erstellen und alles, was Sie benötigen, direkt in das Modell zu injizieren.

Service-Konfiguration:

%Vor%

Platzieren Sie alle Ihre Abhängigkeiten in der Service Manager-Konfiguration und verwenden Sie diese, um Abhängigkeiten in Ihre Modelle, Dienste usw. für Sie einzufügen.

Eine Beispiel-Factory-Klasse, wenn Sie die Factory-Methode anstelle von Closures verwenden möchten:

DemandeFactory.php

%Vor%

Ein Beispielmodell, das Sie über den Service Manager instanziieren möchten.

Demande.php

%Vor%

In Ihrem Controller:

%Vor%

Sie könnten den SergiceManager / ServiceLocator in Ihre Modelle injizieren, aber dann hängen Ihre Modelle vom ServiceLocator ab.

    
Andrew 14.02.2013, 14:56
quelle

Tags und Links