Hallo zusammen,
ich habe eine Frage, die (noch) nicht konkret mit einem Softwareprojekt zu tun hat. Geht eher Richtung Software-Design / Architektur.
Man nehme mal an, wir haben Controller die gewissen Abhängigkeiten. Um es besser testbar zu machen sollen die aber nicht im Controller erstellt werden, sondern von außen abgespritzt (... hä??? nein, natürlich 'injiziert' - abspritzen war nur der erste Treffer bei leo ) werden.
Beispiel:
So weit, so gut. Aber wo erstelle ich so ein UserMapper Objekt um es dann injizieren zu können? Wenn ich an das Zend Framework denke (andere kenne ich nicht wirklich), dann werden mir die Controller Instanzen durch den Dispatcher in irgendeiner Form erstellt. Da habe ich nämlich - soweit ich weiß - keine Möglichkeit dieser Form von DI.
Wenn ich aber etwas eigenes schreibe, was wäre eine geeignete Stelle ohne dabei aber auf Flexibilität beim Erstellen von anderen Controllern verzichten zu müssen?
Ich hab das jetzt einfach mal so runter geschrieben. Möglicher Weise sagt ihr jetzt, dass das so einfach gar nicht zu entscheiden ist und man sich im Vorfeld noch viel mehr Gedanken über die Architektur machen müsste. Wäre für mich auch ok, dann müsste ich das ein Stück weit nach hinten stellen, mir kam dieser Gedanke nur mal so. Eventuell hat aber jemand hier eine konkrete Ahnung / Idee, wie man das in ein paar Sätzen vorstellen kann.
ich habe eine Frage, die (noch) nicht konkret mit einem Softwareprojekt zu tun hat. Geht eher Richtung Software-Design / Architektur.
Man nehme mal an, wir haben Controller die gewissen Abhängigkeiten. Um es besser testbar zu machen sollen die aber nicht im Controller erstellt werden, sondern von außen abgespritzt (... hä??? nein, natürlich 'injiziert' - abspritzen war nur der erste Treffer bei leo ) werden.
Beispiel:
PHP-Code:
class UserController extends SomeAbstractController
{
protected $mapper;
public function __construct(UserMapper $mapper)
{
$this->mapper = $mapper;
}
}
Wenn ich aber etwas eigenes schreibe, was wäre eine geeignete Stelle ohne dabei aber auf Flexibilität beim Erstellen von anderen Controllern verzichten zu müssen?
Ich hab das jetzt einfach mal so runter geschrieben. Möglicher Weise sagt ihr jetzt, dass das so einfach gar nicht zu entscheiden ist und man sich im Vorfeld noch viel mehr Gedanken über die Architektur machen müsste. Wäre für mich auch ok, dann müsste ich das ein Stück weit nach hinten stellen, mir kam dieser Gedanke nur mal so. Eventuell hat aber jemand hier eine konkrete Ahnung / Idee, wie man das in ein paar Sätzen vorstellen kann.
Kommentar