(Yaf >=1.0.0)
Yaf_Route_Regex::__construct — Конструктор класса Yaf_Route_Regex
$match
,$route
,$map
= ?,$verify
= ?,$reverse
= ?
match
Готовый шаблон регулярного выражения будет использоваться для проверки соответствия URI запроса;
если не совпадает, Yaf_Route_Regex вернёт
false
.
route
Когда шаблон соответствия соответствует URI запроса, Yaf_Route_Regex будет решать, к какому маршруту m/c/a он относится.
Любой из m/c/a в этом массиве - необязательный, если вы не назначите какое-либо значение, он перенаправит на маршрут по умолчанию.
map
Массив для назначения имени совпадениям (captures).
verify
reverse
Строка, используемая для формирования URL, смотрите Yaf_Route_Regex::assemble().
Замечание:
Этот параметр был представлен в версии 2.3.0
Пример #1 Пример использования класса Yaf_Route_Regex
<?php
/**
* Добавить маршрут регулярного выражения в стек маршрута Yaf_Router Yaf_Router
*/
Yaf_Dispatcher::getInstance()->getRouter()->addRoute("name",
new Yaf_Route_Regex(
"#^/product/([^/]+)/([^/])+#", // совпадение с URI запроса, начинающегося с "/product"
array(
'controller' => "product", // маршрут на контроллер product,
),
array(
1 => "name", // теперь вы можете вызвать $request->getParam("name")
2 => "id", // для получения первого совпадения в шаблоне.
)
)
);
?>
Пример #2 Пример использования класса Yaf_Route_Regex (с версии 2.3.0)
<?php
/**
* Использовать результат совпадения в качестве имени MVC
*/
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
/**
* Использовать результат совпадения в качестве имени MVC
*/
Yaf_Dispatcher::getInstance()->getRouter()->addRoute("name",
new Yaf_Route_Regex(
"#^/product/(?<name>[^/]+)/([^/])+#i", //match request uri leading "/product"
array(
'controller' => ":name", // маршрут на :name,
// который называется именем группы совпадения 'name' в результате совпадения как имя контроллера
),
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", // маршрут на контроллер product,
'action' => "dummy", // маршрут на действие dummy
),
"map" => array(
1 => "uri", // теперь вы можете вызвать $request->getParam("uri")
),
),
);
Yaf_Dispatcher::getInstance()->getRouter()->addConfig(
new Yaf_Config_Simple($config));
?>