Hallo zusammen
Da ich mein Design mal wieder in Frage gestellt habe, habe ich mir wiedereinmal etliche Resourchen angeschaut. Doch das ganze scheint gar nicht so einfach zu sein in der Praxis wie eben immer theoretisch beschrieben.
Ich habe z.b. für meine Models eine Action Klasse, welche ich den Container injectiere um an diverse Services zuzugreifen im Fall wenn man einen Service benötigt wie z.b einen Logger.
Die services werden nur erstellt bei Verlangen, was ja auch gut ist.
Dann stiess ich auf folgendes bei PHP-Di.org http://php-di.org/doc/best-practices.html:
Dass der Service Locator Pattern ein Anti-Pattern ist und es wird somit zu Dependency Injection geraten.
Dies hat zwar seine Vorteile aber eben auch Nachteile wie, dass alle Dedencies Objekte erstellt werden obwohl man diese vielleicht in einer Methode gar nicht braucht.
Symfony sowie Laravel stellen den Container ja auch in den Controllern zur Verfügung und wird ja auch benutzt.
Mich würde gerne eure Meinung dazu interessieren. Besten Dank im voraus.
Da ich mein Design mal wieder in Frage gestellt habe, habe ich mir wiedereinmal etliche Resourchen angeschaut. Doch das ganze scheint gar nicht so einfach zu sein in der Praxis wie eben immer theoretisch beschrieben.
Ich habe z.b. für meine Models eine Action Klasse, welche ich den Container injectiere um an diverse Services zuzugreifen im Fall wenn man einen Service benötigt wie z.b einen Logger.
Die services werden nur erstellt bei Verlangen, was ja auch gut ist.
PHP-Code:
class Article extends Action {
public function create(array $data) {
// dependecies:
// validator
// languages
// z.b. Logger
// z.B. ImgCreator
}
}
$action = new Article($storageInterface, $container);
$created = $action->create(
'author' => 'me',
'title' => [
1 => 'Title de',
2 => 'Title en'
]
);
// oder
$created = $action->create($request->post()->getAll());
if (!empty($created)) {
// success returns the created model array
} else {
// error
}
Dann stiess ich auf folgendes bei PHP-Di.org http://php-di.org/doc/best-practices.html:
Dass der Service Locator Pattern ein Anti-Pattern ist und es wird somit zu Dependency Injection geraten.
Dies hat zwar seine Vorteile aber eben auch Nachteile wie, dass alle Dedencies Objekte erstellt werden obwohl man diese vielleicht in einer Methode gar nicht braucht.
Symfony sowie Laravel stellen den Container ja auch in den Controllern zur Verfügung und wird ja auch benutzt.
Mich würde gerne eure Meinung dazu interessieren. Besten Dank im voraus.
Kommentar