Mailinglisten-Archive |
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