phpbar.de logo

Mailinglisten-Archive

AW: [php] Singelton Pattern PHP4

AW: [php] Singelton Pattern PHP4

Dejan Spasic php at d-down.de
Mit Mai 18 16:41:38 CEST 2005


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