Клас Yaf_Router

(Yaf >=1.0.0)

Вступ

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 (одним з):

Приклад #1 Правило перезапису Apache

RewriteEngine on RewriteRule !\.(js|ico|gif|jpg|png|css|html)$ index.php

або (переважно):

Приклад #2 Правило перезапису Apache

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 використовуйте таке правило перезапису:

Приклад #3 Правило перезапису для Lighttpd

url.rewrite-once = ( ".*\?(.*)$" => "/index.php?$1", ".*\.(js|ico|gif|jpg|png|css|html)$" => "$0", "" => "/index.php" )

Під час використання Nginx використовуйте таке правило перезапису:

Приклад #4 Правило перезапису Nginx

server { listen****; server_name yourdomain.com; root document_root; index index.php index.md;

if (!-e $request_filename) { rewrite ^/(.*) /index.php/$1 last; } }

Маршрут за замовчуванням

Yaf_Router поставляється з попередньо налаштованим маршрутом за умовчанням Yaf_Route_Static, який буде відповідати URI у формі контролера/дії. Крім того, ім'я модуля може бути зазначено як перший елемент шляху, що дозволяє використовувати URI форми модуля/контролера/дії. Нарешті, він також буде відповідати будь-яким додатковим параметрам, які додаються до URI за замовчуванням - controller /action/var1/value1/var2/value2.

Зауваження :

Ім'я модуля має бути визначено у конфігурації з урахуванням application.module="Index,Foo,Bar", у цьому випадку тільки index, foo та bar можуть розглядатися як ім'я модуля. Якщо не налаштовано, є лише один модуль під назвою "Index".

Деякі приклади відповідності таких маршрутів:

Приклад #5 Приклад использованияYaf_Route_Static(маршрут за замовчуванням)

// Припускаючи наступне налаштування: $conf = array( "application" => array( "modules" => "Index,Blog", ), );

Тільки контролер:http://example/newscontroller == news Тільки дія (якщо визначено yaf.action_prefer=1 в php.ini) action == news

Невірний модуль відображається на ім'я контролера:http://example/foocontroller == foo

Модуль + контролер:http://example/blog/archivemodule == blog controller == archive

Модуль + контролер + дія:http://example/blog/archive/listmodule == blog controller == archive action == list

Модуль + контролер + дія + параметри:http://example/blog/archive/list/sort/alpha/date/descmodule == blog controller == archive action == list sort == alpha date == desc

Огляд класів




    
     
      class Yaf_Router
     
     {

    /* Свойства */
    
     protected
      $_routes;

    protected
      $_current;



    /* Методы */
    
   public __construct()

    public addConfig(Yaf_Config_Abstract $config): bool
public addRoute(string $name, Yaf_Route_Abstract $route): bool
public getCurrentRoute(): string
public getRoute(string $name): Yaf_Route_Interface
public getRoutes(): mixed
public route(Yaf_Request_Abstract $request): bool

   }

Властивості

_routes

стек зареєстрованих маршрутів

_current

після фази маршрутизації вказується назва, який маршрут використовується для маршрутизації поточного запиту. Ви можете отримати його ім'я за допомогою Yaf_Router::getCurrentRoute()

Зміст