Liebes Forum
Da hab ich also vor zwei Tagen tatsächlich angefangen, PHP objektorientiert zu programmieren. Und ich bin begeistert.
Aber da ist nun dieses kleine Problem, daß ich einfach nicht verstehe. Ich habe eine statische Funktion in einer Klasse, die ein Objekt erzeugt:
Der Funktionsaufruf:
conf::load($conf,$myPath);
Die Funktion (der Klasse conf):
function load(&$conf,$myPath) {
if (isset($_SESSION["conf"])) {
$conf = &$_SESSION["conf"];
$conf->setPath($myPath);
echo gettype($conf);
}
else {
$conf = &new conf($myPath);
$_SESSION["conf"] = &$conf;
}
echo gettype($conf);
return $conf;
}
Sinn des ganzen ist es, das Objekt $conf nur neu zu erzeugen, wenn es nicht in der Session vorhanden ist. Wie ihr seht, habe ich an zwei Punkten ein gettype() eingebaut, denn genau das ist das Problem. Innerhalb dieser Funktion ist $conf ein Objekt - wie erwartet. Aber außerhalb der Funktion wird es NULL.
Eigentlich sollte es doch als $conf außerhalb zur Verfügung stehen, da $conf ja als Referenz an load() übergeben wurde. Bei normalen Variablen (und auch schon bei Objekten in normalen Funktionen) hat das immer geklappt.
Wenn ich (wie oben schon eingetragen) $conf mit return zurückgebe, dann funktioniert es, aber ich möchte ja keine Kopie des Objekts, die nur Platz im Speicher braucht.
Woran liegts?
Ich danke Euch
Heizer