Mailinglisten-Archive |
Am Mittwoch, 18. Mai 2005 16:14 schrieb Christian Thiele:
> Hallo,
>
> >> Ich bekomme leider immer nur eine Kopie von der Instanz und die
> >> Referenz. static $instance = null;
>
> Du überschreibst deine Instanz jedes Mal mit null, dann wird diese neu
> erstellt usw...
>
> Liegts daran oder habe ich dich falsch verstanden?
>
> --Christian
Danke fuer deine Antwort.
Nach dem ich den Hinweis das Handbuch zu befragen
bekommen habe, ( http://de2.php.net/static
Abschnitt <<Referenzen bei globalen und statischen Variablen>> )
hat sich das Problem geloest.
<handbuch>
Die Zend Engine 1, die PHP 4 zugrunde liegt, führt die static- und
global-Wandler für Variablen in Bezug auf Referenzen aus. Zum Beispiel
erzeugt eine echte globale Variable, die mit der Anweisung global in den
Funktionsbereich importiert wurde, tatsächlich eine Referenz zur globalen
Variable
</handuch>
Somit ist der richtige Weg
<code>
function &getInstance() {
static $instance = null;
if (!is_object($instance)) {
$instance = new Template_Smart();
}
$retVal = &$instance;
return $retVal;
}
</code>
Sprich.
$instance =& new Template_Smart(); // falsch
$instance = new Template_Smart(); //richtig
php::bar PHP Wiki - Listenarchive