phpbar.de logo

Mailinglisten-Archive

[php] verändern dependency injection

[php] verändern dependency injection

Nico Haase nico at nicohaase.de
Mo Dez 12 09:55:27 CET 2011


Hallo Stephan,
du könntest statt dem Objekt HasInfo per Getter eine Instanz einer
Injektor-Klasse liefern. Diese kennt ebenfalls die zu verändernde Klasse und
die zu verändernden Funktionen, hat allerdings nur eine Funktion
__call()[1]. In dieser reichst du alle "erlaubten" Funktionen an die
eigentliche Klasse durch, und für die veränderten führst du dann eben neue aus.
Grüße
Nico

[1]
http://www.php.net/manual/en/language.oop5.overloading.php#language.oop5.overloading.methods

Am 12.12.2011 09:38, schrieb Stephan Krauß:
> Hallo Liste !
> 
> Ich bräuchte mal eine Information aus der Praxis.
> Momentan plage ich mich mit einem Design Patter herum.
> Ganz konkret geht es um das ' Dependency Injektion ' Pattern.
> Wie kann man die 'Injektion Klasse' nachträglich verändern.
> Der Aufbau der Injektion Klasse darf nicht verändert werden !
> Siehe Beispiel. Gibt es gängige Möglichkeit im Model die
> 'Dependency Class' zu ändern ?
> 
> ---------------------
> 
> interface HasInfo {
>     public function getInfo();
> }
> 
> 
> class model {
> 
>     public $dependency = array();
> 
>     public function setSubclass(HasInfo $class) {
>         return $this->dependency['test'] = $class;
>     }
> 
>     public function veraendereMethodeGetInfo(){
>        // ?????
> 
>        return;
>     }
> 
> }
> 
> class sub implements HasInfo {
> 
>     public function getInfo() {
>         return "info";
>     }
> 
> }
> 
> /*** Controller ****/
> $model = new model();
> $model->setSubclass(new sub());
> $info = $model->dependency['test']->getInfo();
> 
> echo $info;
> 
> -----------------------
> 
> Mit freundlichen Grüßen
> 
> Stephan

php::bar PHP Wiki   -   Listenarchive