Mailinglisten-Archive |
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