Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как вызвать конструктор другого элемента, с помощью call_user_func_array 
:(
    Опции темы
youri
Дата 1.8.2008, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 17.4.2004

Репутация: нет
Всего: 16



по поводу родительского конструктора нашел такое
Код

call_user_func_array(array($this,'parent::__construct'), $args)

но нужно
Код

call_user_func_array(array($obj,'OtherClass::__construct'), $args)

но чтобы получить $obj нужно вызвать OtherClass::__construct
вот такая рекурсия  smile 
PM   Вверх
Sannis
Дата 1.8.2008, 18:48 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 14.8.2007
Где: Москва

Репутация: нет
Всего: 13



Меня больше волнует вопрос "Зачем это делать?"


--------------------
Я Критик Джим, раньше писал моды для IPB 1.3.x-2.3.x, а теперь продвигаю Node.js в массы.
PM MAIL WWW   Вверх
youri
Дата 1.8.2008, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 17.4.2004

Репутация: нет
Всего: 16



ну это уже философия, может создать новую тему smile
ну очевидный ответ в том, чтобы создавать объекты и передавать в конструктор параметры, не зная заранее, что они собой должны представлять
ситуация еще более усложняется, если мы не знаем заранее название класса, объект которого хотим создать
или имелось в виду конкретнее?
PM   Вверх
Fortop
Дата 1.8.2008, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 1
Всего: 42



Цитата(youri @  1.8.2008,  19:04 Найти цитируемый пост)
ситуация еще более усложняется, если мы не знаем заранее название класса, объект которого хотим создать

почему мы этого не знаем?

И поддерживаю Sannis.

Можно уточнить, какую реальную задачу должен решать этот метод?


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
gta4kv
Дата 1.8.2008, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: нет
Всего: 91



Да уж, странный метод smile
PM MAIL   Вверх
Fortop
Дата 1.8.2008, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 1
Всего: 42



Ну, например, factory или builder могут предполагать нечто такое, но там это реализуется несколько иначе.


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Mal Hack
Дата 1.8.2008, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 8
Всего: 261



Не могу ручаться, как в PHP реализовано, но в Сях и в других языках, конструктор не является по существу public функцией, которую можно вызывать из вне. В ПХП должно быть именно так. 
С точки зрения логики, конструктор как бы возвращает созданный объект от того класса в котором он объявлен. Что будет, если это будет другой, внешний класс, лично я не могу понять....

Задача просто абсурдна в какой-то степени.
PM ICQ   Вверх
Fortop
Дата 1.8.2008, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 1
Всего: 42



Цитата(Mal Hack @  1.8.2008,  21:08 Найти цитируемый пост)
Что будет, если это будет другой, внешний класс, лично я не могу понять....

родительский конструктор вызывается вот так

Код

class childClass extends SomeClass
{
    public function __constructor()
    {
        parent::__constructor()
    }
}


конструктор любого другого(внешнего) класса вызывается вот так

Код

$a = new childClass();



--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Fortop
Дата 1.8.2008, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 1
Всего: 42



И да, такой вариант тоже допустим

Код

$a = new $className();





--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Mal Hack
Дата 1.8.2008, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 8
Всего: 261



Fortop, с этим-то все понятно, при создании объекта.
Я про запись: $a = SomeClass::__construct(); , которая и является абсурдом.
PM ICQ   Вверх
Fortop
Дата 1.8.2008, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 1
Всего: 42



а, ну так это - бред.
Тут либо жареное, либо сырое.

Либо класс, как неймспейс
Код

A::someFunction();


либо классы с общим интерфейсом.

Код

$p = new $className();
$p->someFunction();



--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Mal Hack
Дата 1.8.2008, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 8
Всего: 261



Я про это и говорю. Автор-то хочет __cinstruct вызывать в коде... (см п.1)
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




[ Время генерации скрипта: 0.0514 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.