phpbar.de logo

Mailinglisten-Archive

AW: [php] Superglobal selbst erstellen

AW: [php] Superglobal selbst erstellen

Martin Rozmus martin.rozmus at gmx.net
Mon Apr 18 18:25:16 CEST 2005


Am Montag, den 18.04.2005, 17:28 +0200 schrieb Christian Thiele:
> Jonas Schneider schrieb:
> >> Ich möchte das für ein globales Datenbank-Objekt (mit PEAR::DB) 
> >> verwenden, so dass alle Funktionen auf dieses
> 
> Selbst sowas wie $_GET zu erstellen geht nicht, aber für deinen Zweck bietet
> sich ein Singleton-Pattern an (einfach mal googln). Damit bewirkst du, das
> immer auf dein Objekt zugegriffen wird, welches du einmal instanziiert hast.
> 
> $db = getDBHandle();
> 
> Function getDBHandle()
> {
> Static $db;
> if(!$db)
> {
> 	$db = new DB;
> }
> return $db;
> }

Ich habe es früher auch so gemacht und musste feststellen, dass, wenn
eine Ressource öfter eingebunden wird (include), in welcher ein
Singleton aufgerufen wird, die Instanz dort immer wieder gebildet wird.
Ein Ausweg war:

class A
{

    function &singleton( )
    {
        if ( ! isset ( $GLOBALS[ __FILE__ ] ) 
            OR ! is_object( $GLOBALS[ __FILE__ ] ) )
        {
            $GLOBALS[ __FILE__ ] =& new A( );
        }
        return $GLOBALS[ __FILE__ ];
    }

    function A( )
    {
    }
}

Das nur als Tipp, wenn man ganz sicher gehen will, dass man mit nur
einer Instanz arbeitet.

-- 
Mit freundlichem Gruß
Martin Rozmus

Tel.: +49 (0)551 4885944
Mobil.: 0177 7475196
Email: martin.rozmus at gmx.net
PGP: http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x0B13366C


php::bar PHP Wiki   -   Listenarchive