Наследование и и проблема с Singleton

Я правильно понял, что programmer_2006 использует класс B только для реализации паттерна синглтона?
 
Автор оригинала: флоппик
zerkms, я к тому, что в php нельзя ни вернуть данные из конструктора, ни обработать ошибку недоступного конструктора. Вот это был бы правильный синглетон. Поэтому, можно просто с таким же успехом в публичном конструкторе делать die().
Прошу прощения.... Перечитал кучу раз, не могу понять..
Зачем возвращать данные из недоступного конструктора и обрабатывать его ошибку (что за ошибка?)? И почему от этого он станет правильным?
 
Потому что тогда тебе не нужно было бы знать синглтон он или нет. Он бы из конструктора возвращал свой инстанс, и все.
 
Это чтобы не писать

object::GetInstance()->DoSomethig();,

а писать

$obj = new object();
$obj->DoSomething(); ?
 
[flood]

Точно, надо ввести еще два magic-метода: __beforeConstruct() и __afterConstruct() !
Надо вообще так развить язык, чтобы там были одни маджик методы на все случаи жизни. И будет пхп самым магическим языком.

И тогда термин "уличная магия" обретет в программировании своё место.

[/flood]
 
Я тут недавно наткнулся в интернете на решение подобного вопроса.
Решение немного матюковое, но рабочее.

http://php.webconsulting.by/2008/05/08/zend_dbchast-2-ispolzovanie-zend_db_table/

PHP:
class CyEngine_Db_Table extends Zend_Db_Table_Abstract
{
	protected static $_instances;
 
	/**
	* Returns an instance of CyEngine_Db_Table
	*
	* Singleton pattern implementation
	* 
	* @return CyEngine_Db_Table
	*/
	public static function getInstance()
	{
	$bt = debug_backtrace();
	$class = $bt[1]['class'];
	if (!isset(self::$_instances[$class])) {
		self::$_instances[$class] = new $class();
	}
	return self::$_instances[$class];
	}
}

-~{}~ 02.11.08 20:04:

Вот еще подобные решения
http://docs.php.net/manual/ru/language.oop5.patterns.php#85582
http://docs.php.net/manual/ru/language.oop5.patterns.php#82985
http://docs.php.net/manual/ru/language.oop5.patterns.php#82619
 
Сверху