Hallo, ich sitze grad an eine Klasse, die dazu dient andere Klassen zu initiieren und dann in einer Art überwachtem Modus laufen zu lassen.
Der Umgang mit Methoden und Variablen klappt problemlos. Wenn ich aber versuche ein Array zu verwenden wird beim schreiben eines Wertes die __get anstatt der __set Methode verwendet.
Im obrigen Beispiel wird nur die Ausgabe Der Wert von array wird abgefragt erzeugt.
Google war leider keine große Hilfe und zeigt nur die Standardfunktionsweisen von __get und __set.
Mein Versuch eine Referenz zu setzen hat leider auch nicht funktioniert.
Kennt jemand eine Möglichkeit, wie man dieses Problem umgehen kann?
Der Umgang mit Methoden und Variablen klappt problemlos. Wenn ich aber versuche ein Array zu verwenden wird beim schreiben eines Wertes die __get anstatt der __set Methode verwendet.
PHP:
class foo
{
private $instance = false;
public function __construct($classname)
{
$this->instance = new $classname;
}
public function __call($method, $arguments)
{
echo 'Methode '.$method.' wird aufgerufen<br />';
return call_user_func_array(array($this->instance, $method), $arguments);
}
public function __set($var, $value)
{
echo $var.' wird auf '.$value.' gesetzt<br />';
$this->instance->$var = $value;
}
public function __get($var)
{
echo 'Der Wert von '.$var.' wird abgefragt<br />';
return $this->instance->$var;
}
}
class bar
{
public $var;
public $array = array();
public function test($value)
{
return $value.' aus Methode test';
}
public function zeige()
{
echo $this->var.'<br />';
print_r($this->array);
}
}
$foo = new foo('bar');
$foo->array['key'] = '2';
Im obrigen Beispiel wird nur die Ausgabe Der Wert von array wird abgefragt erzeugt.
Google war leider keine große Hilfe und zeigt nur die Standardfunktionsweisen von __get und __set.
Mein Versuch eine Referenz zu setzen hat leider auch nicht funktioniert.
Kennt jemand eine Möglichkeit, wie man dieses Problem umgehen kann?