Yaf_Route_Regex::__construct

(Yaf >=1.0.0)

Yaf_Route_Regex::__constructИнициализирует новый экземпляр класса Yaf_Route_Regex

Описание

public function Yaf_Route_Regex::__construct(
    string $match,
    array $route,
    array $map = ?,
    array $verify = ?,
    string $reverse = ?
)

Список параметров

match

Регулярное выражение для проверки соответствия URI запроса шаблону. При несовпадении URI объект Yaf_Route_Regex вернёт значение false.

route

Массив с правилами построения маршрута. При совпадении URI запроса с шаблоном объект Yaf_Route_Regex построит маршрут и направит запрос в модуль, контроллер и (или) действие.

Ни один компонент маршрута не относится к обязательным, маршрутизатор подставит значение по умолчанию, если в массиве компоненту не присвоили конкретное значение.

map

Массив для назначения имён совпадениям, которые захватил шаблон в результате сопоставления.

verify

reverse

Строка для обратной сборки URL-адреса методом Yaf_Route_Regex::assemble().

Замечание:

Параметр доступен с Yaf 2.3.0.

Возвращаемые значения

Примеры

Пример #1 Пример работы с классом Yaf_Route_Regex

<?php

/**
 * Добавить в стек маршрутизатора Yaf_RouterПример маршрут на основе регулярного выражения
 */
Yaf_Dispatcher::getInstance()->getRouter()->addRoute(
    "name",
    new Yaf_Route_Regex(
        "#^/product/([^/]+)/([^/])+#", // Соответствует URI запроса, который начинается с "/product"
        array(
            'controller' => "product", // Маршрут к контроллеру продукта
        ),
        array(
            1 => "name",   // Вызов $request->getParam("name") теперь вернёт первое совпадение, которое захватил шаблон
            2 => "id",
        )
    )
);

Пример #2 Пример работы с классом Yaf_Route_Regex с версии 2.3.0

<?php

/**
 * Обработать результат совпадения как имя MCA
 */
Yaf_Dispatcher::getInstance()->getRouter()->addRoute(
    "name",
    new Yaf_Route_Regex(
        "#^/product/([^/]+)/([^/])+#i", // Соответствует URI запроса, который начинается с "/product"
        array(
            'controller' => ":name", // Маршрут к контроллеру, название которого получил заменитель :name
                                     // в результате захвата совпадения $1
        ),
        array(
            1 => "name",   // Вызов $request->getParam("name") вернёт первое захваченное шаблоном совпадение
            2 => "id",
        )
    )
);

Пример #3 Пример работы с классом Yaf_Route_Regex с версии 2.3.0

<?php

/**
 * Обработать результат совпадения как имя MCA
 */
Yaf_Dispatcher::getInstance()->getRouter()->addRoute(
    "name",
    new Yaf_Route_Regex(
        "#^/product/(?<name>[^/]+)/([^/])+#i", // Соответствует URI запроса, который начинается с "/product"
        array(
            'controller' => ":name", // Маршрут к контроллеру, название которого получил заменитель :name
                                     // в результате захвата совпадения $1
        ),
        array(
            2 => "id",
        )
    )
);

Пример #4 Пример работы с классом Yaf_Route_Regex

<?php

/**
 * Добавить в стек маршрутизатора Yaf_Router маршрут на основе регулярного выражения
 * путём вызова метода addConfig
 */
$config = array(
    "name" => array(
        "type"  => "regex",  // Маршрут Yaf_Route_Regex
        "match" => "#(.*)#", // Совпадение с произвольным URI запроса
        "route" => array(
            'controller' => "product",  // Маршрут к контроллеру продукта
            'action'     => "dummy",    // Маршрут к бессмысленному действию
        ),
        "map" => array(
            1 => "uri",   // Вызов $request->getParam("uri") теперь вернёт URI запроса
        ),
    ),
);

Yaf_Dispatcher::getInstance()->getRouter()->addConfig(
    new Yaf_Config_Simple($config)
);

Смотрите также