Referenzen

Nob

Mitglied
Hallo zusammen

Kann mir jemand dieses Ergebnis erkären?
Ausgegeben wird "23".
Ich verstehe nicht wiso nicht "2233" ausgegeben wird..

PHP:
	class a{
		var $data;
		var $instance;
		
		function setData(&$data){
			$this->data = &$data;
		}
		function out(){
			echo $this->data;
		}
		function outi(){
			$this->instance->out();
		}
		
		function makeInstance(){
			$this->instance = new a();
			$this->instance->setData($this->data);
		}
	}
	
	
	$i = 2;
	$eins = new a();
	$eins->makeInstance();
	$eins->setData($i);
	$eins->out();
	$eins->outi();
	$i = 3;
	$eins->out();
	$eins->outi();

Vielen Dank
Michi
 
Wenn du die Instanz der Klasse angibst, ist $data noch nicht gefüllt. du musst beim Aufruf makeInstance() auch die Variable übergeben. Zudem solltest du den Standard-Konstruktor beim Aufruf verwenden!
 
Beim Aufruf der makeInstance()-Methode besitzt das data-Attribut noch keinen Wert. Daher besitzt auch das data-Attribut des instance-Objekts keinen Wert, womit auch die outi()-Methode keinen Wert ausgibt.
 
Ja aber ich gebe doch die Referenz mit oder?
Weil bei
PHP:
$i = 3; 
$eins->out();

ändert sich $data ja auch...
 
Zurück