Mailinglisten-Archive |
Hallo allesamt, stehe hier grad tooootal auf dem Schlauch. Ich habe eine Basis-Klasse namens "openWebX", welche alle magic-Functions beinhaltet, um z.B. bei __get eine Exception zu schmeissen o.ä. Nun habe ich da auch versucht eine Singleton-Funktion zu bauen, a la: class openWebX { public static $instances = array(); private function __construct() { } static function init($strObject,$mixedParams='') { if(!in_array($strObject, self::$instances)) { echo 'init new instance of '.$strObject.'<br/>'; self::$instances[$strObject] = new $strObject($mixedParams); } return self::$instances[$strObject]; } . . . } Vielleicht problematisch (?): ich nutze auch eine __autoload function: function __autoload($strLibName) { $loadLib = Settings::get('path_lib').$strLibFolder.'/'.$strLibName.'.php'; require_once($loadLib); } Ich definiere nun eine Klasse class openLib extends openWebX { /* common lib-functions */ } und finally dann class openDB extends openLib { } Wenn ich nun in einem File sowas mache: $myDB = openWebX::init('openDB'); $myDB2 = openWebX::init('openDB'); $myDB3 = openWebX::init('openDB'); $myDB4 = openWebX::init('openDB'); $myDB5 = openWebX::init('openDB'); Kommt die Ausgabe: init new instance of openDB init new instance of openDB init new instance of openDB init new instance of openDB init new instance of openDB Vielleicht kann mir jemand den Schlauch unter den Füßen entfernen... Danke, Jens
php::bar PHP Wiki - Listenarchive