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