Zend framework 2 Zugriff auf Globale config in der model-Klasse
Habe ich eine model-Klasse, die erstreckt sich nicht jeder core Zend-Modul . Dieses Modell wurde importiert von meinem früheren Zend framework 1 Anwendung . Ich bin in der Lage, die Methoden aufrufen, die durch Umwandlung, um-namespace . Das problem was ich habe, ist Lesen in der globalen Konfiguration in der Seite, die die Methoden definiert .
Im Fall der controller war ich in der Lage, Zugang zu den globalen-Konfiguration mit dem folgenden code
$config = $this->getServiceLocator()->get('config');
//This gives a union of global configuration along with module configuration .
Aber was sollten wir tun, um Zugriff auf die Konfiguration Seite in eine model-Klasse .
Unten ist, wie mein Modell-Klasse ist
<?php
namespace test\Http;
class Request
{
protected $client;
public function abc( $c)
{
return $something;
}
......
}
Ich bin neu in Zend framework 2 bitte freundlich darauf hin jede Methode, dies zu erreichen .
In der obigen Beschreibung Modell bedeutet ( MVC-model-Klasse ), die hat einige business-Logik in ihm .
- Was genau meinst du mit "Modell" hier? Entität? Sie wahrscheinlich nicht tun sollten, dass, wenn das ist die Frage. Bedenken Sie, dass Sie erreichen können, ist der global config, wo Sie eine Referenz auf den service-locator...
- Vielen Dank für die Beantwortung dieser , ich habe eine Modell-Klasse ( nur eine class, die business-Logik )
- So ist es eine Dienstleistung? Oder einfach nur ein entity enthält Daten + etwas Logik?
- Nur eine Person , ich weiß nicht, was meinst du mit Einheit , Aber gemäß meinem Verständnis eine unabhängige business-Klasse
- Siehe Abschnitt "Bausteine des DDD" in en.wikipedia.org/wiki/Domain-driven_design für die Definition von Entitäts-und Service 😉
- Überprüfen Sie diese [Lösung][1]. Sie haben beide die Lösungen, die ich mir denken kann. [1]: stackoverflow.com/questions/12770966/...
- Ich brauche nicht zu verlängern Zend-FORMULAR oder die Tabelle, da bin ich nicht mit Ihnen ist es ein Zend-Modul, dass ich verlängern kann , mit sich erweitern, Wenn ich nicht umzusetzen denke ich
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vorausgesetzt, Sie bauen sich Ihre Dienstleistung (dein code sieht aus wie ein Dienst), werden Sie wahrscheinlich instanziert, die in einer service factory (in diesem Fall habe ich ihn in der Modul-Konfiguration):
Diese Weise, werden Sie injizieren das config-Objekt direkt in seiner consumer (ohne einen Verweis auf die service-locator in der Verbraucher -)
Andere Möglichkeit ist die Umsetzung
Zend\ServiceManager\ServiceLocatorAwareInterface
in IhremGaGooGl\Http\Request
. Ich persönlich entmutigen, aber diese im Grunde können Sie IhreRequest
Objekt halten eine Referenz auf die service-locator-intern, daher macht es möglich, zum abrufen derconfig
service zur Laufzeit.Request
Objekt, oder übergeben Sie die$sl
zu denRequest
Objekt (so dass dann dasRequest
Objekt zugreifen kann, um die'config'
service)einfachste Weg, dies zu tun
include_once
und nichtinclude
könnte besser sein. Und vielleicht mit der Fabrik-laden der Konfiguration-Datei könnte noch besser sein. @see framework.zend.com/manual/2.4/en/modules/...Überprüfen diese. Es hat zwei Lösungen. Eines ist die Umsetzung eines Service locator bewusst Schnittstelle. Ein weiterer ist, injizieren Sie den service manager in Ihrem Modell. Für beide, müssen Sie instanziieren Sie Ihr Modell-Objekt über den service-manager.