PHP 8.6.0 Beta 3 is available for testing

Yaf_Route_Regex::__construct

(Yaf >=1.0.0)

Yaf_Route_Regex::__constructConstructor de Yaf_Route_Regex

Descripción

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

Construye 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.

Parámetros

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.

route

Cuando 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.

map

Un 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.

verify

Aceptado y almacenado en la ruta, pero no utilizado: la implementación actual nunca lo consulta durante el enrutamiento.

reverse

Una 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.

Valores devueltos

No se devuelve ningún valor.

Ejemplos

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)
);
?>

Véase también

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top