Nachtrag: Decorator
bearbeitet von
moin,
> das ist kein Dekorator, sondern eine Art von Fabrik, die Services als Singletons liefert.
Sry, das verstehe ich leider nicht.
> Das kann man machen, sofern die Services tatsächlich Singleton-tauglich sind, d.h. stateless.
Du meinst `new Singelton::getInstance()`{: .language-php}. Was hat das mit den privaten Service Klassen zutun, die in einer Kontainer Klasse `ServiceClass`{: .language-php} bereit gestellt werden, die wiederum im `AbstractClass`{: .language-php} Konstruktor instanziiert wurde? Meine Service Klassen werden nur einmal Instanziiert um dann der `AbstractenClasse`{: .language-php} über `$this->service->doSommething()`{: .language-php} verdeckt zur Verfügung zu stehen, da sie ja private sind und sich in einer öffentlichen Methode der `ServiceClass`{: .language-php} teileweise ergänzen. Beispiel:
~~~php
class ServiceClass {
private $fooService;
private $barService;
public function __construct () {
$this->fooService = new FooService;
$this->barService = new BarService;
}
public function doSomthing() : void {
$this->fooService->doAnything ();
$this->barService->doNothing ();
}
public
}
~~~
lgmb
Nachtrag: Decorator
bearbeitet von
moin,
> das ist kein Dekorator, sondern eine Art von Fabrik, die Services als Singletons liefert.
Sry, das verstehe ich leider nicht.
> Das kann man machen, sofern die Services tatsächlich Singleton-tauglich sind, d.h. stateless.
Du meinst `new Singelton::getInstance()`{: .language-php}. Was hat das mit den privaten Service Klassen zutun, die in einer Kontainer klasse `ServiceClass`{: .language-php} bereit gestellt werden, die wiederum im `AbstractClass`{: .language-php} Konstruktor instanziiert wurde? Meine Service Klassen werden nur einmal Instanziiert um dann der `AbstractenClasse`{: .language-php} über `$this->service->doSommething()`{: .language-php} verdeckt zur Verfügung zu stellen, da sie ja private sind und sich in einer öffentlichen Methode der `ServiceClass`{: .language-php} teileweise ergänzen. Beispiel:
~~~php
class ServiceClass {
private $fooService;
private $barService;
public function __construct () {
$this->fooService = new FooService;
$this->barService = new BarService;
}
public function doSomthing() : void {
$this->fooService->doAnything ();
$this->barService->doNothing ();
}
public
}
~~~
lgmb
Nachtrag: Decorator
bearbeitet von
moin,
> das ist kein Dekorator, sondern eine Art von Fabrik, die Services als Singletons liefert.
Sry, das verstehe ich leider nicht.
> Das kann man machen, sofern die Services tatsächlich Singleton-tauglich sind, d.h. stateless.
Du meinst `new Singelton::getInstance()`{: .language-php}. Was hat das mit den privaten Service Klassen zutun, die in einer Kontainer klasse `ServiceClass`{: .language-php} bereit gestellt werden, die im `AbstractClass`{: .language-php} Konstruktor instanziiert ist? Meine Service Klassen werden nur einmal Instanziiert um dann der `AbstractenClasse`{: .language-php} über `$this->service->doSommething()`{: .language-php} verdeckt zur Verfügung zu stellen, da sie ja private sind und sich in einer öffentlichen Methode der `ServiceClass`{: .language-php} teileweise ergänzen. Beispiel:
~~~php
class ServiceClass {
private $fooService;
private $barService;
public function __construct () {
$this->fooService = new FooService;
$this->barService = new BarService;
}
public function doSomthing() : void {
$this->fooService->doAnything ();
$this->barService->doNothing ();
}
public
}
~~~
lgmb