(Untitled)

Nov 11, 2007 21:44

причём тут Синглтон?

Singleton::getInstance -- это метод класса.
этот метод нужно было определять в каждом классе, который хотелось бы сделать Одиночкой.

теперь же, ценой совсем небольшого геморроя, определяем маленький класс Синглтон, а потом наследуем от него что-угодно:

in plain english )

Leave a comment

stas November 11 2007, 22:07:28 UTC
В 5.3 есть late static binding:

public static function getInstance() {
$className = get_called_class();
if(!isset(self::$instances[$className])) self::$instances[$className] = new $className;
return self::$instances[$className];
}

Reply

demiurg November 11 2007, 22:09:16 UTC
эка, а я и не знал.
пасиб!

Reply

stas November 11 2007, 23:58:25 UTC
он же static:: если не надо динамики (т.е. static::foo() как self:: и parent::).

Reply

david_m November 12 2007, 10:07:53 UTC
Хм, а чем тогда отличается self::foo() от static::foo()?

Reply

stas November 12 2007, 17:27:49 UTC
self:: - всегда имя того класса, где оно написано. static:: - имя того класса, который написан в вызове функции.

Reply

david_m November 12 2007, 17:39:15 UTC
А, понятно.

Reply


Leave a comment

Up