NetBull
Erfahrenes Mitglied
Hi,
ich komm hier nicht weiter. Wohl ein Denkfehler,...
Ich habe ein Programm vor, wo etliche Objekte gemeinsam genutzt werden. Damit die Objekte nicht in jeder Klasse neu übergeben werden müssen, wollte ich die Objekte als global definieren und dann in den entsprechenden Klassen als Referenz weiter verwenden.
Klasse a soll der globalen Klasse lediglich einen String erweitern
ebenso die klasse b
so sieht dann die globale klasse aus:
und hier nun der Aufruf:
An dieser Stelle würde ich erwarten das 123 ausgegeben wird. Stattdessen bekomme ich aber nur 1 ausgegeben. Also keine Referenz sondern eine Kopie des Objektes.
Was mache ich falsch oder geht das in PHP generell nicht und ich muss den umständlichen Weg über den Konstruktor gehen? Wichtig ist das nachher alle Klassen mit dem gleichen Objekt arbeiten und dieses noch beeinflussen können.
cu S00n
deAndro!
ich komm hier nicht weiter. Wohl ein Denkfehler,...
Ich habe ein Programm vor, wo etliche Objekte gemeinsam genutzt werden. Damit die Objekte nicht in jeder Klasse neu übergeben werden müssen, wollte ich die Objekte als global definieren und dann in den entsprechenden Klassen als Referenz weiter verwenden.
Klasse a soll der globalen Klasse lediglich einen String erweitern
Code:
class aClass
{
private $globalObj;
function __construct()
{
global $gGlobal;
$this->globalObj = &$gGlobal;
$this->globalObj->test .= "2";
}
}
ebenso die klasse b
Code:
class bClass
{
private $globalObj;
function __construct()
{
global $gGlobal;
$this->globalObj = &$gGlobal;
$this->globalObj->test .= "3";
}
}
so sieht dann die globale klasse aus:
Code:
class gGlobalObj
{
public $test;
function __construct()
{
$this->test = "1";
}
}
und hier nun der Aufruf:
Code:
global $gGlobaObj;
$gGlobaObj = new gGlobalObj();
echo "vorher: ".$gGlobaObj->test;
$aobj = new aClass();
$bobj = new bClass();
echo "nachher: ".$gGlobaObj->test;
An dieser Stelle würde ich erwarten das 123 ausgegeben wird. Stattdessen bekomme ich aber nur 1 ausgegeben. Also keine Referenz sondern eine Kopie des Objektes.
Was mache ich falsch oder geht das in PHP generell nicht und ich muss den umständlichen Weg über den Konstruktor gehen? Wichtig ist das nachher alle Klassen mit dem gleichen Objekt arbeiten und dieses noch beeinflussen können.
cu S00n
deAndro!