Передать в контруктор класса массив...

Solid

Drosera anglica
Передать в контруктор класса массив...

В общем сложилась несколько нестандартная ситуация. Хотелось бы нарисовать приятный синглтон для php4. Всё уже вроде готово, но есть одно но... хотелось бы всё это сделать красиво.

Что уже есть:

PHP:
class singleton {
	function &get($class, $arg=null) {
		static $instances = array();

		if(!array_key_exists($class, $instances)) {
			$instances[$class] = new $class($arg);
		}

		return $instances[$class];
	}
}
"Проблема" сейчас в том, что аргумент может быть только один... конечно, можно передавать данные через массив, но этот метод мне несовсем нравится.

Чего хотелось бы... может быть кто-то знает возможно ли передать в контруктор создаваемого объекта, как к примеру в функцию: http://ee.php.net/manual/en/function.call-user-func.php!? Или, быть может, посоветуете что-то другое?

Буду очень благодарен,
Дмитрий.
 

Andreika

"PHP for nubies" reader
Solid
набери воздуха побольше, чтобы было чего выдыхать... вот на этой самой странице из твоей ссылки.. слева... набрал воздуха? щас.. в общем там слева.... сссылки на другие функции.. выдохнули, пошли смотреть ссылки
 

Solid

Drosera anglica
Автор оригинала: Andreika
Solid
набери воздуха побольше, чтобы было чего выдыхать... вот на этой самой странице из твоей ссылки.. слева... набрал воздуха? щас.. в общем там слева.... сссылки на другие функции.. выдохнули, пошли смотреть ссылки
Хм!?
 

Andreika

"PHP for nubies" reader
Solid
неужели все посмотрел? быстро что-то... или заранее уверен, что я твой вопрос не понял?
 

Solid

Drosera anglica
Видимо никак...
PHP:
$instances[$class] = call_user_func_array(array(new $class, $class), $arg);
Что-то вроде этого, только надо к $instances[$class] присвоить объект класса $class;

-~{}~ 01.05.06 19:02:

Самое интересное, что так работает, но опять же таки, хочу что бы и в PHP5 не выдавало ошибки
"PHP Notice: Trying to get property of non-object in test.php on line 25".
 

Andreika

"PHP for nubies" reader
Solid
не работает оно так, не сочиняй.. в массив у тебя первым элементом передается (ссылка на )уже созданный объект, у которого ты пытаешся вызвать несуществующую в PHP5 функцию %)
 

Solid

Drosera anglica
Да, извиняюсь... там не new, а просто $class... но тогда уже идёт работа не с объектом, а с классом.
Andreika
Может быть у тебя есть свой вариант?
 
Сверху