![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
gta4kv |
|
|||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 21 Всего: 91 |
хай.
есть некий код:
А как теперь можно вызвать, например,: $module_controller::$action( ); Поясню, у нас модуль - login и action - page надо вызвать login_controller::init( 'page' ) Как это реализовать? Никак не надумаю... Это сообщение отредактировал(а) gta4kv - 21.10.2008, 19:54 |
|||
|
||||
Sunvas |
|
|||
![]() Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 8 Всего: 89 |
gta4kv, пожалуйста, опишите проблему детальнее.
-------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
gta4kv |
|
|||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 21 Всего: 91 |
Sunvas,
слов уж не хватает всё описать ![]() Вызвается у нас модуль /module/action/ запрос уходит в index.php?module=module&act=action мне нужно что бы вызвался метод init( 'act' ) в классе module_controller т.е с моим примером это будет module_controller:init( 'action' ); если брать: /news/show/ то должно вызваться: news_controller::init( 'show' ); |
|||
|
||||
Sunvas |
|
|||
![]() Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 8 Всего: 89 |
Единственное решение, которое мне представляется, это eval:
-------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
gta4kv |
|
|||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 21 Всего: 91 |
Ммм, значит будем искать другой подход.
eval... для меня такой функции нет. ![]() |
|||
|
||||
Sunvas |
|
|||
![]() Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 8 Всего: 89 |
Почему? Ну ладно, как вариант могу предложить:
-------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
gta4kv |
|
|||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 21 Всего: 91 |
Sunvas, если бы, так нельзя. (пробовал уже)
(такой метод катит только с ->) Это сообщение отредактировал(а) gta4kv - 23.10.2008, 19:06 |
|||
|
||||
sTa1kEr |
|
||||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 56 Всего: 146 |
gta4kv,
Или через рефлекшен
Это сообщение отредактировал(а) sTa1kEr - 23.10.2008, 19:41 |
||||
|
|||||
gta4kv |
|
|||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 21 Всего: 91 |
sTa1kEr,
Что по-твоему мнению предпочтительнее в данной ситуации? (Да и вообще). |
|||
|
||||
sTa1kEr |
|
|||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 56 Всего: 146 |
Предпочтительнее вообще избегать подобных решений. Но если от этого не уйти, то, имхо, лучше использовать рефлекшены. Это несколько безопаснее, удобнее и значительно функциональнее. Но по большому счету - это дело вкуса/стиля. |
|||
|
||||
gta4kv |
|
||||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 21 Всего: 91 |
Я тоже так думаю, но а как лучше то можно сделать? Вот код: (думаю будет понятна идея)
т.е задача сделать "систему" модульной. (динамической/расширяемой(как больше нравится)) Это сообщение отредактировал(а) gta4kv - 23.10.2008, 20:25 |
||||
|
|||||
sTa1kEr |
|
|||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 56 Всего: 146 |
Да, в данном случае такого подхода не избежать. Но тогда желательно как минимум имплеменитровать всем контроллерам интерфейс, известный диспечеру и делать соответствующую проверку. Это сообщение отредактировал(а) sTa1kEr - 23.10.2008, 20:37 |
|||
|
||||
gta4kv |
|
|||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 21 Всего: 91 |
sTa1kEr, можно подробнее?
Имеешь в веду сделать интерфейс и описать там все стандартные методы? Я, на самом то деле, думаю что это не пригодится. Так как разработкой занимаюсь я сам, и модули все тоже буду я писать. ![]() |
|||
|
||||
sTa1kEr |
|
||||||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 56 Всего: 146 |
Это не имеет значения. С точки зрения PHP ты вызываешь совершенно неизвестный метод совершенно не известного ему класса. Имхо, это очень плохой стиль программирования (кстати, возможный только в PHP), который может привести не самым лучшим результатам. Если уж ты обращаешься к классу с неизвестным тебе именем, а тем более если имя это приходит "из-вне", то как минимум методы доступа к этому классу просто обязаны быть как-то описаны. Для данной задачи интерфейс контроллера должен как минимум иметь метод init
И соответственно перед вызовом этого метода PHP должен знать, что класс имплементирует этот интерфейс.
|
||||||
|
|||||||
gta4kv |
|
|||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 21 Всего: 91 |
sTa1kEr, благодарен за исчерпывающий ответ.
Ну, как уже выше обсуждалось, по-другому не выходит. ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |