[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: URI роутеры и ЧПУ
paul85
Уважаемые господа!

Кто-нибудь может мне на пальцах (то есть очень доходчиво) объяснить для чего все-таки использовать дикие регулярные выражения в маршрутах? Ну вот скажем я не вижу особой разницы между:
/admin/edituser/id

и просто:
/edituser/id


Чем мешает лишнее слово, в данном случае admin? ИМХО гораздо читабельнее и лучше URL как в первом случае.
T1grOK
А если во frontend-е используется /edituser/id и в backend-е? то как в backend-e определить, что именно он нужен, а не frontend?

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
paul85
Зачем на фронтенде отдавать динамические страницы? Если я правильно понимаю схему с фронтенд сервером, то он должен отдавать статику и заниматься кэшированием. А все сценарии обрабатываются на бэкенде.

Вот во всех фреймворках, что я видел, в частности и в кохане, используются маршруты для определения контроллера и т.д. Почему просто не сделать динамический парсер?

У меня реализован элементарнейшим образом (не претендую на идеалы, но тем не менее) фрагмент:
  public function launch()
{
/*Дефолиный контроллер и метод определен в полях класса.
* Для изменения дефолтов существуют отдельные функции
*/

/* Split GET query and path.
* In fact, cut off the request cz it's already in the environment. */

$parsed = parse_url($this->url);
$raw_url = $parsed['path'];

/*URL decoding */
$url = trim(urldecode($raw_url), '/');

/*Split URL into array for processing.*/
$elements = explode('/', $url);
$count = count($elements);

if($count > 2)
{
$this->class=$elements[0];
$this->method=$elements[1];
for($i=2; $i<$count; $i++)
{
$this->arg[]=$elements[$i];
}
return $this->_launcher();
}
elseif($count == 2)
{
$this->class=$elements[0];
$this->method=$elements[1];
return $this->_launcher();
}
elseif($count == 1 and $elements[0] != NULL)
{
$this->class=$elements[0];
return $this->_launcher();
}
else
return
$this->_launcher();
}
Запускается еще проще:
private function _launcher()
{
/*Различные проверки на существование файла, класса в нем и метода
*Выбрасываем исключения.
*/


$obj = new $this->class();
return call_user_func(array($obj, $this->method), $this->arg);
}

Вот я все пытаюсь понять чем это, собственно, плохо. И зачем во фреймворках городят огород?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.