Роутинг

craz

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

Заранее спасибо.

Up. https://github.com/chriso/klein.php как думаете пойдет для простенькой доски сообщений?
 

fixxxer

К.О.
Партнер клуба
простенький?

nginx.conf
Код:
server {
    #...
    set $action default;
    set $args '';
    location / {
        set $controller notFound;
        try_files $uri @php;
    }   
    location = / {
        set $controller index;
        try_files $uri @php;
    }   
    location /news/ {
        set $controller news;
        location ~ ^/news/(\d+)/? {
            set $action getById;
            set $args "id=$1";
            try_files $uri @php;
        }   
        try_files $uri @php;
    }   
    location @php {
        fastcgi_index  index.php;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_param  SCRIPT_FILENAME    $document_root/index.php;
        fastcgi_param  CONTROLLER $controller;
        fastcgi_param  ACTION $action;
        fastcgi_param  ARGS $args;
        include fastcgi_params;
    }   
}
PHP:
require "controllers/{$_SERVER['CONTROLLER']}.php";
$class = $_SERVER['CONTROLLER'] . 'Controller';
$action = 'action' . $_SERVER['ACTION'];
parse_str($_SERVER['ARGS'], $args);
(new $class)->$action($args);
 

Вурдалак

Продвинутый новичок
fixxxer, если сделать запрос /index.php, то он разве не выведет содержимое скрипта?
 

craz

Нестандартное звание
неа я не буду ngix ставить ради этого... - так как под простеньким я имел ввиду, что я могу его нормально прочесть за 30-40 минут и досконально знать, что он делает. Просто я давно не пользовался чем-то кроме фреймворков, а их внутренности рассматривать на предмет полного понимая - это есть глупость с моей точки зрения, то есть для использования это совершенно не обязательно, только для обучения.
код который я надыбыл конечно редкий уг... придется переписывать чтоль...
 

Redjik

Джедай-мастер
craz
да ну, на документации и стакоферфлоуах далеко не уедешь, быстрее код глянуть
 

craz

Нестандартное звание
craz
да ну, на документации и стакоферфлоуах далеко не уедешь, быстрее код глянуть
ну глянь в zf2 и найди какой кусок кода точно отвечает за роутинг? я его хотел заюзать сначала но пока я бегал по вызовам я потратил 20-30 минут так и найдя нужного куска кода, просто разбирающего URI и отдающее все параметры из него.
Для меня 20-30 минут много, ведь я не хочу весь фреймворк использовать, только эту часть.
 

fixxxer

К.О.
Партнер клуба
fixxxer, если сделать запрос /index.php, то он разве не выведет содержимое скрипта?
а, ну да, это я переупростил, на самом деле
fastcgi_param SCRIPT_FILENAME $php_root/index.php;
где $php_root != $document_root (а например уровнем выше)

craz
у меня обычно кроме nginx ничего нет)
ту же идею можно и на php
PHP:
$routes = array(
    '/' => 'index',
    '/news/' => 'news',
    '/news/(?<id>\d+)' => 'news.getById',
    //...
);
по вхождению ( делим на prefix и regexp (может быть пустой - тогда префикс это полное соответствие урлу), находим максимальное соответствие префикса, дальше регулярки
 

craz

Нестандартное звание
fixxxer
Ну я и прошу именно что-то типа такого только готового, ты же просто классмап мне кинул, я правильно понимаю? Я кстати что-то не понял идею классмапа, точнее его удобство... про скорость ничего не скажу 30-40% хорошая скорость. Но мне пока скорость не нужна.
 

fixxxer

К.О.
Партнер клуба
а зачем для простенькой доски сообщений что-то сложнее обычного маппинга? :)
 

craz

Нестандартное звание
Ммм. ну сначала она простая... а потом classmap_generator.php надо будет писать

Короче вот у меня всегда так) только начну велосипед собирать... сразу задачи возникают не велосипедостроительские, я уже на 80% склонился опять использовать какой-нить фреймворк...
 

AmdY

Пью пиво
Команда форума
craz
бери laravel и не парься. там отличный роутинг.
 
  • Like
Реакции: craz

AmdY

Пью пиво
Команда форума
craz
да, причём довольно офигенный, заодно возьми бандл lara_admin и можно за день набросать доску объявлений.
 

fixxxer

К.О.
Партнер клуба
sf2 это один большой оверинжиниринг

laravel смотрю, прикольно. у меня многие вещи сделаны похоже
 

craz

Нестандартное звание
craz
да, причём довольно офигенный, заодно возьми бандл lara_admin и можно за день набросать доску объявлений.
ты работал с ним? Я тупо создаю на скелетоне его в контроллере action_profile как в примере кода он выдает 404, у него нет стандартного роутинга чтоль?

Хм. не очень дружественное поведение. На чем основано желание не показывать экшены по умолчанию? Я просто не встречался с таким.

PHP:
Route::controller(Controller::detect());
 

craz

Нестандартное звание
блин я ненавижу программирование! я всего лишь хотел выводить на страницу сообщения... теперь я знаю про рутинг в симфонии и сел смотреть целый новый фреймворк...
 

Redjik

Джедай-мастер
блин я ненавижу программирование! я всего лишь хотел выводить на страницу сообщения... теперь я знаю про рутинг в симфонии и сел смотреть целый новый фреймворк...
http://fabien.potencier.org/article/53/create-your-own-framework-on-top-of-the-symfony2-components-part-4

ну и если интересно, то вообще серию всю прочитай
 
Сверху