В чем разница Route, Router, Request?

Vladex

Новичок
Или наверное проще тут объяснить.
Маршрут такой
PHP:
$router->map('/', 'someController:indexAction', array('methods' => 'GET'))
Как его запустить, на примере
PHP:
class HelloController
{
    public function indexAction($name)
    {
        return new Response('<html><body>Hello '.$name.'!</body></html>');
    }
}
 

Вурдалак

Продвинутый новичок
Vladex, вся логика по созданию инстанса контроллера и вызова метода лежит на тебе, роутер этого не делает.
 

Vladex

Новичок
Как мне использовать данные поступившие из URL строки, прошедшие или сформированные через(с помощью) роутера?
 

hell0w0rd

Продвинутый новичок
Как-то не красиво этот класс реализован. Посмотрите лучше на классы роутинга в slim, а затем silex.
 

Вурдалак

Продвинутый новичок
Как мне использовать данные поступившие из URL строки, прошедшие или сформированные через(с помощью) роутера?
Vladex, вся логика по созданию инстанса контроллера и вызова метода лежит на тебе, роутер этого не делает.
Рефлексия и вот это всё.

Как-то не красиво этот класс реализован. Посмотрите лучше на классы роутинга в slim, а затем silex.
Я думаю, вопрос останется тем же.
 

hell0w0rd

Продвинутый новичок
Рефлексия и вот это всё.


Я думаю, вопрос останется тем же.
Не думаю, человек не понимает, как вытащить роут. А тут все очень просто:
PHP:
$app->get('/user/{id}/{action}', function($id, $action) use($app){
    return 'Вы на странице пользователя №'.$id.' и собираетесь с ним сделать '.$action; 
});
 

Vladex

Новичок
На сколько я понимаю роутер нужен только для красивости url адреса.
И имея уже адрес в строке с ней можно работать.
Вытягивать параметры, так
explode('/', $_SERVER['REQUEST_URI']);
И используя параметры запускать действия, правильно?
Не хочу сейчас прыгать на разные реализации роутинга, думаю они должны быть одинаковые в теории, и только в реализации разные.
 

hell0w0rd

Продвинутый новичок
На сколько я понимаю роутер нужен только для красивости url адреса.
И имея уже адрес в строке с ней можно работать.
Вытягивать параметры, так
explode('/', $_SERVER['REQUEST_URI']);
И используя параметры запускать действия, правильно?
Не хочу сейчас прыгать на разные реализации роутинга, думаю они должны быть одинаковые в теории, и только в реализации разные.
Роутер помогает отсортировать реальные запросы, только и всего. Так в чем ваш вопрос сейчас-то?
 

Vladex

Новичок
Ну вот смотри, я имею вдреса к примеру
www.example.com/text/moscow/
www.example.com/text/piter/
В файле index.php и делаю include router.php
Там же пишу функцию
function text {
вывожу текст с параметром москва или питер
}
А как мне передать эти параметры из файла router и index?
 

hell0w0rd

Продвинутый новичок
Ну вот смотри, я имею вдреса к примеру
www.example.com/text/moscow/
www.example.com/text/piter/
В файле index.php и делаю include router.php
Там же пишу функцию
function text {
вывожу текст с параметром москва или питер
}
А как мне передать эти параметры из файла router и index?
А вот тут я и говорю - уйди с этого класса и возьми микро-фреймворк.
PHP:
$app->get('/text/{city}', function($city) {
    return $city;
});
Ты сейчас с роутингом разберешься - тебе захочется шаблонизацию, или валидацию, или кеширование, а может быть логирование, или исключения. Так и будешь обрастать несвязными библиотеками.
 

Vladex

Новичок
Опа, а как маршрутизация будет мешать валидации или шаблонизации?
 

hell0w0rd

Продвинутый новичок
Опа, а как маршрутизация будет мешать валидации или шаблонизации?
Да епрст, никак не будет мешать. Просто в фреймворке уже это решено и тебе не прийдется решать задачу связности всего этого.
$app->get( ... )
->assert('id', '\d+') //проверил
->bind('blablapage'); // создал что-то типо symlink

Где-то в другом контроллере $app['url_generator']->generate('blablapage')
В общем твое дело:)
 

Vladex

Новичок
Да нет, тут как раз дело не мое:)
Я ведь просто начитался уже про mvc и про роутинг.
Как правильно и хорошо я не знаю пока.
Просто спорю на основании того что почитал уже.
Речь о silex?
 

hell0w0rd

Продвинутый новичок
Да нет, тут как раз дело не мое:)
Я ведь просто начитался уже про mvc и про роутинг.
Как правильно и хорошо я не знаю пока.
Просто спорю на основании того что почитал уже.
Речь о silex?
Да, о silex, но подобное умеют и другие микрофреймворки. Просто мощный бэкграунд в виде симфони не может не радовать)
Я советую фреймворк взять, потому что там уже все сделано для комфортной работы. Например контейнер зависимостей.
 

Vladex

Новичок
Неужеле лучше начать изучение с фреймворка, нежели с теории?
Как правильнее?
 

hell0w0rd

Продвинутый новичок
Неужеле лучше начать изучение с фреймворка, нежели с теории?
Как правильнее?
Я ведь просто начитался уже про mvc и про роутинг.
Что из этого правда?)
Что есть теория-то? Почитай доки, разберись - вот тебе и изучил. Фреймворки имеют API для расширений - напиши что-нибудь, возможно что-то уже существующее, мне на пример в silex не понравился не один из существующих провайдеров для doctrine - я сел и написал свой, пока писал - смотрел чужой код и потихоньку разбирался. И так во всем же:)
 

Вурдалак

Продвинутый новичок
GusakovNick, ну так и приведённый класс closure умеет. Вместо ответов на вопросы ты накидываешь ещё больше информации.

Хотя и мне этот роутер не нравится.
 
Сверху