причём
тут Синглтон?
Singleton::getInstance -- это метод класса.
этот метод нужно было определять в каждом классе, который хотелось бы сделать Одиночкой.
теперь же, ценой совсем небольшого геморроя, определяем маленький класс Синглтон, а потом наследуем от него что-угодно:
(
in plain english )
Comments 22
public static function getInstance() {
$className = get_called_class();
if(!isset(self::$instances[$className])) self::$instances[$className] = new $className;
return self::$instances[$className];
}
Reply
пасиб!
Reply
Reply
Reply
но все равно жесть
а че кроме как через debug_backtrace в пятерке класс не получить?
Reply
всё красивенько даже получается.
щас код проапдейчу в посте.
но проблема "курицы и йейца" по-моему всё равно остаётся.
Reply
Вот чем хорош PHP, так это тем, что в нём и невозможное - возможно:) Вообще-то, кажется, ни в одном (нормальном, строгом, логичном - по вкусу) языке статик-метод не может определить, в контексте какого класса его дёрнули. Нельзя. Но раз нам очень хочется… ну почему не ввести ещё одну функцию? Чай не впервой.
Reply
Как вы думаете, сколько народу будет постоянно путаться - __callStatic или __staticCall?
Reply
Reply
Reply
Reply
Reply
они там по ходу дела конкретно переработали работу со статическими классами.
надо будет потом release notes на 5.3 почитать =)
Reply
Reply
# php -v
PHP 6.0.0-dev (cli) (built: Nov 8 2007 22:02:02)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v3.0.0-dev, Copyright (c) 1998-2007 Zend Technologies
# php5 -v
PHP 5.3.0-dev (cli) (built: Nov 8 2007 22:28:06)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2007 Zend Technologies
Reply
Leave a comment