#1 2010.11.12 20:36

Morgan
Участник
Зарегистрирован: 2009.03.31
Сообщений: 333
Карма: 10
Профиль Веб-сайт

Классы/обьекты

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


Натан ротшильд :
Кто владеет информацией, тот владеет миром

Неактивен

#2 2010.11.12 20:57

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Классы/обьекты

эм, parent::__construct();

Неактивен

#3 2010.11.13 08:36

Morgan
Участник
Зарегистрирован: 2009.03.31
Сообщений: 333
Карма: 10
Профиль Веб-сайт

Re: Классы/обьекты

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


Натан ротшильд :
Кто владеет информацией, тот владеет миром

Неактивен

#4 2010.11.13 08:59

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Классы/обьекты

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

Неактивен

#5 2010.11.13 14:40

Morgan
Участник
Зарегистрирован: 2009.03.31
Сообщений: 333
Карма: 10
Профиль Веб-сайт

Re: Классы/обьекты

так что ли?

Код:

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...
}

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


Натан ротшильд :
Кто владеет информацией, тот владеет миром

Неактивен

#6 2010.11.14 13:57

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Классы/обьекты

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

Неактивен

#7 2010.11.14 16:21

Morgan
Участник
Зарегистрирован: 2009.03.31
Сообщений: 333
Карма: 10
Профиль Веб-сайт

Re: Классы/обьекты

Код:

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

не катит


Натан ротшильд :
Кто владеет информацией, тот владеет миром

Неактивен

#8 2010.11.14 18:08

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Классы/обьекты

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

Неактивен

#9 2010.11.14 21:14

Morgan
Участник
Зарегистрирован: 2009.03.31
Сообщений: 333
Карма: 10
Профиль Веб-сайт

Re: Классы/обьекты

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


Натан ротшильд :
Кто владеет информацией, тот владеет миром

Неактивен

#10 2010.11.16 22:05

Morgan
Участник
Зарегистрирован: 2009.03.31
Сообщений: 333
Карма: 10
Профиль Веб-сайт

Re: Классы/обьекты

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


Натан ротшильд :
Кто владеет информацией, тот владеет миром

Неактивен

#11 2010.11.17 10:34

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Классы/обьекты

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

Неактивен

#12 2010.11.18 23:27

Morgan
Участник
Зарегистрирован: 2009.03.31
Сообщений: 333
Карма: 10
Профиль Веб-сайт

Re: Классы/обьекты

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

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

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

;/


Натан ротшильд :
Кто владеет информацией, тот владеет миром

Неактивен

#13 2010.11.19 10:28

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Классы/обьекты

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

Неактивен

#14 2010.11.19 13:10

Morgan
Участник
Зарегистрирован: 2009.03.31
Сообщений: 333
Карма: 10
Профиль Веб-сайт

Re: Классы/обьекты

:wall: :fuck: :suck:


Натан ротшильд :
Кто владеет информацией, тот владеет миром

Неактивен

#15 2010.11.19 22:24

Morgan
Участник
Зарегистрирован: 2009.03.31
Сообщений: 333
Карма: 10
Профиль Веб-сайт

Re: Классы/обьекты

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


Натан ротшильд :
Кто владеет информацией, тот владеет миром

Неактивен

#16 2010.11.19 23:40

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Классы/обьекты

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

Неактивен

#17 2010.11.22 15:27

Morgan
Участник
Зарегистрирован: 2009.03.31
Сообщений: 333
Карма: 10
Профиль Веб-сайт

Re: Классы/обьекты

ждем)


Натан ротшильд :
Кто владеет информацией, тот владеет миром

Неактивен

Дополнительно

forum.wapinet.ru

PunBB Mod v0.6.2
0.013 s