Yaf_Router
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Yaf_Router
Референца за `class.yaf-router.php` со подобрена типографија и навигација.
The Yaf_Router class
(Yaf >=1.0.0)
Вовед
Yaf_Router Класата Yaf_Router е стандарден рутер на рамката. Рутирањето е процес на земање на крајна точка на URI (тој дел од URI што доаѓа по основната URI: видетеYaf_Request_Abstract::setBaseUri() Yaf_Request_Abstract ) и негово разложување на параметри за да се утврди кој модул, контролер и акција на тој контролер треба да ја прими барањето. Овие вредности на модулот, контролерот, акцијата и другите параметри се спакувани во Yaf_Dispatcherобјект кој потоа се обработува од Yaf_Router . Рутирањето се случува само еднаш: кога барањето е првично примено и пред да се испрати првиот контролер.
е дизајниран да овозможи функционалност слична на mod_rewrite користејќи чисти PHP структури. Многу е лабаво базиран на рутирањето на Ruby on Rails и не бара никакво претходно знаење за препишување URL-и на веб-сервер. Дизајниран е да работи со едно правило на Apache mod_rewrite (едно од):
RewriteEngine on RewriteRule !\.(js|ico|gif|jpg|png|css|html)$ index.php
или (препорачано):
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
Ако користите Lighttpd, следното правило за препишување е валидно:
url.rewrite-once = ( ".*\?(.*)$" => "/index.php?$1", ".*\.(js|ico|gif|jpg|png|css|html)$" => "$0", "" => "/index.php" )
Ако користите Nginx, користете го следното правило за препишување:
server {
listen ****;
server_name yourdomain.com;
root document_root;
index index.php index.html;
if (!-e $request_filename) {
rewrite ^/(.*) /index.php/$1 last;
}
}
Пример #4 Правило за препишување за Nginx
Yaf_Router Стандардна рута Yaf_Route_Staticдоаѓа претходно конфигуриран со стандардна рута
Забелешка:
, што ќе одговара на URI во форма контролер/акција. Дополнително, името на модулот може да се специфицира како прв елемент на патеката, дозволувајќи URI во форма модул/контролер/акција. Конечно, исто така ќе одговара на сите дополнителни параметри додадени на URI по дифолт - контролер/акција/var1/value1/var2/value2.
Името на модулот мора да биде дефинирано во конфигурацијата, земајќи го предвид application.module="Index,Foo,Bar", во овој случај, само index, foo и bar можат да се сметаат како име на модул. ако нема конфигурација, постои само еден модул наречен "Index".
Генератор Yaf_Route_StaticНекои примери за тоа како се совпаѓаат таквите рути:
// Assuming the following configure:
$conf = array(
"application" => array(
"modules" => "Index,Blog",
),
);
Controller only:
http://example/news
controller == news
Action only(when defined yaf.action_prefer=1 in php.ini)
action == news
Invalid module maps to controller name:
http://example/foo
controller == foo
Module + controller:
http://example/blog/archive
module == blog
controller == archive
Module + controller + action:
http://example/blog/archive/list
module == blog
controller == archive
action == list
Module + controller + action + params:
http://example/blog/archive/list/sort/alpha/date/desc
module == blog
controller == archive
action == list
sort == alpha
date == desc
Синопсис на класата
Својства
- _routes
-
стек на регистрирани рути
- _current
-
по фазата на рутирање, ова го означува името на рутата што се користи за рутирање на тековното барање. ова име можете да го добиете со Yaf_Router::getCurrentRoute().
Содржина
- Yaf_Router::addConfig — Додај рути дефинирани во конфигурацијата во рутерот
- Yaf_Router::addRoute — Додај нова рута во рутерот
- Yaf_Router::__construct — Конструктор Yaf_Router
- Yaf_Router::getCurrentRoute — Земи го името на ефективната рута
- Yaf_Router::getRoute — Преземи рута по име
- Yaf_Router::getRoutes — Преземи регистрирани рути
- Yaf_Router::route — Цел на рутирање