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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Маршрутизация, Вызов метода класса 
V
    Опции темы
bars80080
Дата 27.8.2010, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(Just123 @  27.8.2010,  00:54 Найти цитируемый пост)
поправьте меня, если я ошибаюсь, но с помощью функции func_get_args(), можно узнать лишь то, какие аргументы были переданы функции.

я отвечал на вопрос:
Цитата(Just123 @  27.8.2010,  00:16 Найти цитируемый пост)
Нельзя никак передать 2, 3, n аргументов?

func_get_args отлично позволяет обрабатывать сколько-угодно аргументов.

насчёт остального я даже боюсь читать, ибо не могу найти смысл
PM MAIL WWW   Вверх
Shogun
Дата 27.8.2010, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сёгун-сан
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 8.6.2006
Где: Кишинёв

Репутация: 9
Всего: 11



Код

class controller_class
  {
    public function controller_method($p1='', $p2='', $p3='')
      {
        echo $p1.'/'.$p2.'/'.$p3;
      }
  }

$uri = 'controller_class/controller_method/param1/param2/param3';

$segments = explode('/', trim($uri, ' /'));

$class = array_shift($segments);
$method = array_shift($segments);

if (is_callable(array($class, $method)))
  {
    call_user_func_array(array($class, $method), $segments);
  }
else { echo 'Error: 404'; }


Это сообщение отредактировал(а) Shogun - 27.8.2010, 14:39


--------------------
2b || !2b
PM MAIL ICQ Skype   Вверх
Just123
Дата 9.11.2010, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Я на некоторое время уезжал и не было возможности ни отписываться здесь, ни продолжать кодить, поэтому, если никто не против, я снова подниму данную тему.

Попытаюсь заново объяснить то, что требуется, на примере Code Igniter.

CodeIgniter использует подход, основанный на сегментах адреса:
www.your-site.com/news/article/my_article

Сегменты в URL, соответствуют архитектуре Модель-Отображение-Контроллер и, как правило, строятся таким образом:
www.your-site.com/class/function/arg

В первом сегменте описывается контроллер class к которому происходит обращение.
Во втором сегменте происходит ссылка на функцию function или метод, который необходимо вызвать.
В третьем и последующих сегментах описываются переменные, которые будут переданы в эту функцию.

В CI метод может выглядеть к примеру вот так:

Код

    function hello ($name, $id) {
        echo "\$name = $name";
        echo "<br>";
        echo "$id";
        
    }


В качестве аргументов передаются сегменты URL, ну а названиях переменных могут быть любыми и это будут именно переменные с осмысленными названиями, а не массивы.

Как этого добиться? Ковыряюсь в CI, но толком никак понять не могу, каким образом они это реализовали.
PM MAIL   Вверх
Shogun
Дата 11.11.2010, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сёгун-сан
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 8.6.2006
Где: Кишинёв

Репутация: 9
Всего: 11



Just123, в моем посте я именно такой метод и написал.

http://forum.vingrad.ru/index.php?showtopi...t&p=2203743


--------------------
2b || !2b
PM MAIL ICQ Skype   Вверх
Just123
Дата 11.11.2010, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Shogun, Точно! Спасибо большое, я почему-то когда пробовал его в прошлый раз, он не захотел нормально работать, видимо я где-то что-то перепутал.

Спасибо вам большое, вы мне очень помогли.

P.S. Я так понимаю, методы в таком случаи должны быть статическими? Т.к. если они не статические, то вылазиет ошибка:

Strict Standards: Non-static method controller_class::controller_method() cannot be called statically in D:\Web Server\Apache\htdocs\test.php on line 18

Strict Standards: Non-static method controller_class::controller_method() cannot be called statically in D:\Web Server\Apache\htdocs\test.php on line 20

Strict Standards: Non-static method controller_class::controller_method() cannot be called statically in D:\Web Server\Apache\htdocs\test.php on line 20
PM MAIL   Вверх
Shogun
Дата 11.11.2010, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сёгун-сан
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 8.6.2006
Где: Кишинёв

Репутация: 9
Всего: 11



Just123, хммм да нет не обязательно, в примере же не статичный метод...  а какая у вас версия пхп??


--------------------
2b || !2b
PM MAIL ICQ Skype   Вверх
Just123
Дата 11.11.2010, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Shogun, Версия 5.3, скорее всего из-за этого и ошибки. В любом случаи, спасибо еще раз. smile
PM MAIL   Вверх
Shogun
Дата 11.11.2010, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сёгун-сан
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 8.6.2006
Где: Кишинёв

Репутация: 9
Всего: 11



Just123, не думаю что и за этого... я тестил на 5.2 и на 5.3.1 и все нормально... ;)


--------------------
2b || !2b
PM MAIL ICQ Skype   Вверх
Just123
Дата 11.11.2010, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Shogun, Очень странно, так как даже пример у меня выдает те же самые ошибки. Аномалия. ))
PM MAIL   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

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


 




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


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

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