phpbar.de logo

Mailinglisten-Archive

AW: [php] Einem Objekt dynamisch Methoden hinzufügen.

AW: [php] Einem Objekt dynamisch Methoden hinzufügen.

Eric Binek ich at ericbinek.de
Die Feb 22 11:40:49 CET 2005


Hi Andreas,

iss net so ganz was ich mir gedacht habe.

Vieleicht hab ich mich auch falsch asgedrückt.

hier ein schnelles Beispiel wie ich das gewünschte "simulieren"  
kann...aber nicht will.

File 1: (foo.php)

<?php
class c_foo {
	
	var $obj;
	var	$arr_settings;
	var $arr_methods;
	var $output;
	
	function c_foo(&$obj) {
		$this->obj = &$obj;
		$this->arr_settings['name'] = 'foo';
	}
	
	function m_main() {
		return $this->output = '<p>'.$this->m_method( 'print' , 'bar' ).'</p>';
	}
	
	function m_method($method, $param) {
		require_once($this->arr_settings['name'].'.'.$method.'.php');
		$class  = 'c_'.$this->arr_settings['name'].'_'.$method;
		$method = 'm_'.$method;
		$this->arr_methods[$class] = & new $class ( & $this->obj );
		return $this->arr_methods[$class]->$method( & $param );
	}
}
	
	$obj = 1;
	$foo = new c_foo(&$obj);
	print $foo->m_main();
?>

File 2 (foo.print.php)

<?php
class c_foo_print {
	
	var $obj;
	
	function c_foo_print(&$obj)	{
		$this->obj = &$obj;
	}
	
	function m_print() {
		return 'bar';
	}
}
?>

Mir gehts eigendlich darum eine Klasse "beliebig" zu erweitern ohne die  
Datei anzufassen. Was ja mit den Design Pattern ja geht. Aber ich will was  
anderes.Ich will alle Methoden in einzelnen Dateien haben.
Somit müsste jede Klasse nur einen bestimmten Grundbestand an Methoden  
haben und könnte beliebig ausgebaut werden. Was ja der Dateigrösse  
zuspricht und ich muss auserdem nicht bei jeder Instanz der Klasse jeden  
Sch.... mitladen der irgendwann mal gebraucht wird. Nur wenn die Methode  
"gebraucht" wird soll sie importiert werden und ihren Dienst tun.

In dem Beispiel hab ich das über ein Unterobjekt erreicht. Ich will aber  
diese Funktionalität ohne Extraklasse erreichen. Einfach nur die Methode  
"m_print" in die Klasse "c_foo" reindreschen ohne irgendwelche  
Unterklassen oder Vererbungen.

Gruß Eric

php::bar PHP Wiki   -   Listenarchive