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