![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Just123 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 9.12.2007 Где: localhost Репутация: нет Всего: нет |
Здравствуйте, помогите пожалуйста с решением одной проблемы.
Пишу CMS со следующей системой маршрутизации: URL имеет вид http://site.ru/НАЗВАНИЕ_КОМПОНЕНТА/НАЗВАНИЕ_МЕТОДА/ПАРАМЕТР_МЕТОДА1/ПАРАМЕТР_МЕТОДА2/и т.д./ Роутер из URL вытаскивает НАЗВАНИЕ_КОМПОНЕНТА и подгружает его. Структура компонента:
Подгрузить компонент понятно как, но как вызвать метод компонента? Надеюсь понятно объяснил, что требуется. Заранее больше спасибо за советы и помощь. |
|||
|
||||
| StachelDraht |
|
|||
![]() Не Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 429 Регистрация: 19.1.2006 Репутация: 1 Всего: 1 |
может быть проще использовать какой нибудь фрэймворк
|
|||
|
||||
| overmetallist |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 19.8.2010 Репутация: нет Всего: нет |
вот
$callback — это корректный callback-вызов PHP Yii-приложения состоят из компонентов–объектов, созданных согласно спецификациям. Компонент (component) — это экземпляр класса CComponent или производного от него. Использование компонента в основном включает доступ к его свойствам, а также вызов и обработку его событий. Базовый класс CComponent устанавливает то, как определяются свойства и события.
Это сообщение отредактировал(а) overmetallist - 23.8.2010, 17:57 |
||||
|
|||||
| Just123 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 9.12.2007 Где: localhost Репутация: нет Всего: нет |
Это не рабочий проект, пишу ради опыта. overmetallist, не уверен, что до конца понял :( Можно какой-нибудь пример на пальцах, пожалуйста. В любом случаи, большое спасибо. |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
посмотрите в сторону call_user_func() или чего-то аналогичного
|
|||
|
||||
| overmetallist |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 19.8.2010 Репутация: нет Всего: нет |
можно и так как предложил bars80080 :
вот еще намудрил:
Это сообщение отредактировал(а) overmetallist - 23.8.2010, 21:30 |
||||
|
|||||
| littlemook |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 24.8.2010 Репутация: нет Всего: нет |
Лучше call_user_func_array, удобней параметры подавать цельным массивом |
|||
|
||||
| ZneP |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 15.7.2008 Где: Россия, Москва Репутация: нет Всего: нет |
Как-то так я бы сделал P.S. не тестил, поэтому за extract($Params) не ручаюсь |
|||
|
||||
| gta4kv |
|
||||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 21 Всего: 91 |
Расскажу немножко о своем опыте в этом прискорбном деле.
Была в свое время такая же задача, реализовал я её с помощью ReflectionClass. Работало все примерно так:
И вот самый просто пример модуля с таким подходом
default_function забита в конфиге, "функция по-умолчанию". (в моем случае -- load). |
||||
|
|||||
| Just123 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 9.12.2007 Где: localhost Репутация: нет Всего: нет |
bars80080, overmetallist, littlemook, ZneP, gta4kv, Большое спасибо!
|
|||
|
||||
| Just123 |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 9.12.2007 Где: localhost Репутация: нет Всего: нет |
Написал следующий метод:
Правда пока он не принимает аргументов функций. Подскажите пожалуйста: 1) Как проверить существует функция или нет?
В данном случаи, если функция не существует, появится ошибка: Warning: call_user_func(News::asd) [function.call-user-func]: First argument is expected to be a valid callback in D:\Web Server\Apache\htdocs\kernel\classes\Route.php on line 49 как избежать появления этой ошибки, без помощи @ ? 2) Как передать аргументы в функцию, если общее количество аргументов не известно? Это сообщение отредактировал(а) Just123 - 26.8.2010, 01:42 |
||||
|
|||||
| gta4kv |
|
|||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 21 Всего: 91 |
(скромно намекает) советую испробовать мой вариант, или хотя бы просто заглянуть в код в предыдущем моём посте.
Это сообщение отредактировал(а) gta4kv - 26.8.2010, 01:44 |
|||
|
||||
| Just123 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 9.12.2007 Где: localhost Репутация: нет Всего: нет |
gta4kv, Я просто не хотел бы использовать по умолчанию отключенные расширения.
Это сообщение отредактировал(а) Just123 - 26.8.2010, 02:04 |
|||
|
||||
| gta4kv |
|
|||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 21 Всего: 91 |
||||
|
||||
| Just123 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 9.12.2007 Где: localhost Репутация: нет Всего: нет |
gta4kv, Извиняюсь, проглядел function_exists. Спасибо большое.
Добавлено через 7 минут и 21 секунду А как быть со вторым вопросом: Как передать аргументы в функцию, если общее количество аргументов не известно? |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |