(Yaf >=1.0.0)
Yaf_Route_Regex::__construct — Constructor de Yaf_Route_Regex
$match,$route,$map = null,$verify = null,$reverse = nullConstruye una ruta Yaf_Route_Regex, que enruta una URI de petición que coincide con una expresión regular hacia un módulo, un controlador y una acción.
match
Un patrón de expresión regular completo, utilizado para hacer coincidir la URI
de la petición. Cuando no coincide, Yaf_Route_Regex::route()
devuelve false y el router pasa a la siguiente ruta.
routeCuando el patrón coincide con la URI de la petición, este array determina el módulo, el controlador y la acción a los que enrutar.
Cada una de las tres entradas es opcional; cuando no se proporciona, se usa
el valor por omisión. Una entrada cuyo valor comienza con :
se resuelve contra los parámetros producidos por map.
mapUn array que asigna índices de grupos de captura a nombres de parámetros. Solo las capturas enumeradas aquí se convierten en parámetros de la petición; una captura numérica no enumerada se descarta.
Los grupos de captura con nombre siempre se añaden bajo su propio nombre y no necesitan ser enumerados.
verifyAceptado y almacenado en la ruta, pero no utilizado: la implementación actual nunca lo consulta durante el enrutamiento.
reverseUna string utilizada para ensamblar la URL; véase Yaf_Route_Regex::assemble().
Nota:
Este parámetro fue introducido en la versión 2.3.0.
No se devuelve ningún valor.
Ejemplo #1 Yaf_Route_Regex mediante Yaf_Router::addRoute()
<?php
/**
* Añade una ruta regex a la pila de rutas de Yaf_Router
*/
Yaf_Dispatcher::getInstance()->getRouter()->addRoute(
"name",
new Yaf_Route_Regex(
"#^/product/([^/]+)/([^/]+)#", // coincide con una URI que empieza por "/product"
array(
'controller' => "product", // enruta al controlador product
),
array(
1 => "name", // $request->getParam("name") contiene la primera captura
2 => "id", // y $request->getParam("id") la segunda
)
)
);
?>Ejemplo #2 Yaf_Route_Regex usando una captura como nombre de controlador
<?php
/**
* Usa una captura como nombre del controlador
*/
Yaf_Dispatcher::getInstance()->getRouter()->addRoute(
"name",
new Yaf_Route_Regex(
"#^/product/([^/]+)/([^/]+)#i", // coincide con una URI que empieza por "/product"
array(
'controller' => ":name", // la captura "name" (véase map) se convierte en el controlador
),
array(
1 => "name", // $request->getParam("name") contiene la primera captura
2 => "id", // y $request->getParam("id") la segunda
)
)
);
?>Ejemplo #3 Yaf_Route_Regex usando un grupo de captura con nombre
<?php
/**
* Usa un grupo de captura con nombre como nombre del controlador
*/
Yaf_Dispatcher::getInstance()->getRouter()->addRoute(
"name",
new Yaf_Route_Regex(
"#^/product/(?<name>[^/]+)/([^/]+)#i", // coincide con una URI que empieza por "/product"
array(
'controller' => ":name", // la captura "name" se convierte en el controlador
),
array(
2 => "id", // el grupo 1 tiene nombre, solo el grupo 2 necesita una entrada en map
)
)
);
?>Ejemplo #4 Yaf_Route_Regex mediante Yaf_Router::addConfig()
<?php
/**
* Añade una ruta regex a la pila de rutas de Yaf_Router mediante un array de configuración
*/
$config = array(
"name" => array(
"type" => "regex", // una ruta Yaf_Route_Regex
"match" => "#(.*)#", // coincide con cualquier URI de petición
"route" => array(
'controller' => "product", // enruta al controlador product
'action' => "dummy", // y a la acción dummy
),
"map" => array(
1 => "uri", // $request->getParam("uri") contiene la URI coincidente
),
),
);
Yaf_Dispatcher::getInstance()->getRouter()->addConfig(
new Yaf_Config_Simple($config)
);
?>