Morgan » 2010.11.12 20:36

Требуется вызвать конструктор базового класса, из производного с переменным количеством аргументов.
пляски с call_user_(method|func)_array не помогли.

Gemorroj » 2010.11.12 20:57

эм, parent::__construct();

Morgan » 2010.11.13 08:36

С переменным количеством аргументов

Gemorroj » 2010.11.13 08:59

есть возможность подсчитать количество аргументов? если да, то просто через switch

Morgan » 2010.11.13 14:40

так что ли?

Код:

1
2
3
4
5
6
7
8
$args = func_get_args();
 
switch(count($args))
{
case 1: parent::__construct($args[0]); break;
case 2: parent::__construct($args[0], $args[1]); break;
// etc...
}

как сказал один умный человек, ни к селу ни к городу.

Gemorroj » 2010.11.14 13:57

ну, в общем именно так) у тебя же все равно не будет методов на непредвиденное кол-во аргументов. так что с помощью swith мы сможем заранее кинуть исключение.
а что с call_user_func_array не так-то?

Morgan » 2010.11.14 16:21

Код:

1
2
3
4
call_user_func_array(....
array('parent', '__construct')
'parent::__construct'
);

не катит

Gemorroj » 2010.11.14 18:08

Да, почитал сейчас подробнее про call_user_func_array. В конструктор параметры не передать.

Morgan » 2010.11.14 21:14

надобность отпала.

Morgan » 2010.11.16 22:05

надобность появилась :D

Gemorroj » 2010.11.17 10:34

ну, eval не подходит, думаю? а в таком случае единственное что приходит - отказаться от конструкторов или передавать в конструкторы результат func_get_args() и в них разгребать параметры

Morgan » 2010.11.18 23:27

дополнительный вопросец.
Обращаюсь к статическому массиву класса ($data).

При обращении к
"self::$data[$name] = $value;"
работает.

Но вот когда "$data[$name]" получается динамически, т.е. происходит такая конструкция:
"self::$$var_name = $value;"
вылетает ошибка
"Fatal error: Access to undeclared static property: Registry::$data['S']"

;/

Gemorroj » 2010.11.19 10:28

очевидно правильное решение полюбому отказаться от переменных переменных)

Morgan » 2010.11.19 13:10

:wall: :fuck: :suck:

Morgan » 2010.11.19 22:24

архитектуру привел в порядок...... теперь такая возможность не нужна.  :cool:

Gemorroj » 2010.11.19 23:40

=)) к нам на работу человека взяли, мыслит просто шаблонами проектирования. через слово у него вылетают всякие "active-record", "mvc", "fabric" и проч) рвется все в проекте переписать под свой лад)) я сопротивляюсь, но все равно новый код появляется (не попадающий под текущую архитектуру проекта), как-нить выложу код для изучения, мне, например, было интересно поизучать.

Morgan » 2010.11.22 15:27

ждем)