On Mon, April 24, 2006 2:18 pm, Simas Toleikis wrote: >> php6 will include static late binding > > Great. Love the other new features, especially namespaces. > >> - until then you have 2 choices, >> create a hack (see below) or stick redundant code into each class >> you >> want to be a singleton. > > The hack doesn't work (See below). Guess we are left with copy-paste > thing :-/ Though i wonder if there are any other hacks using some sort > of classkit/other class manipulation functions? > >> public static function GetInstance() >> { >> if (!isset(self::$instance)) { >> if (!isset(self::$class)) { > > Isn't that self::$class the same "late static binding" thing? :-) As i > get it, at this point from Singleton::GetInstance() you can't get the > static $class member of Test class. I'll be damned if I understand what the big deal is, but there are other hacks one could employ... Something along the lines of: function singleton($class_name){ static $singletons = array(); if (isset($singletons[$class_name])){ return $singletons[$class_name]; } else{ $singletons[$class_name] = new $class_name; return $singletons[$class_name]; } } You'd maybe want to have constructor args and use func_get_args to pass along the args to a different post-constructor constructor of you own design. Yes, this is a hack. I think it's inferior to the other hack posted. But it's something one should at least consider and reject. -- Like Music? http://l-i-e.com/artists.htm -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php