PHP 8.4.26 Released!

Yaf_Route_Regex::__construct

(Yaf >=1.0.0)

Yaf_Route_Regex::__construct — Constructeur Yaf_Route_Regex

Description

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

Construit une route Yaf_Route_Regex, qui route une URI de requête correspondant à une expression rationnelle vers un module, un contrôleur et une action.

Liste de paramètres

match

Un masque d'expression rationnelle complet, utilisé pour correspondre à l'URI de la requête. Lorsqu'il ne correspond pas, Yaf_Route_Regex::route() retourne false et le routeur passe à la route suivante.

route

Lorsque le masque correspond à l'URI de la requête, ce tableau détermine le module, le contrôleur et l'action vers lesquels router.

Chacune des trois entrées est optionnelle ; lorsque l'une n'est pas fournie, la valeur par défaut est utilisée. Une entrée dont la valeur commence par : est résolue à partir des paramètres produits par map.

map

Un tableau associant les indices des groupes de capture à des noms de paramètres. Seules les captures listées ici deviennent des paramètres de la requête ; une capture numérique qui n'est pas listée est ignorée.

Les groupes de capture nommés sont toujours ajoutés sous leur propre nom et n'ont pas besoin d'être listés.

verify

Accepté et stocké sur la route, mais inutilisé : l'implémentation actuelle ne le consulte jamais lors du routage.

reverse

Une chaîne de caractères, utilisée pour assembler une URL, voir Yaf_Route_Regex::assemble().

Note:

Ce paramètre a été introduit en 2.3.0

Valeurs de retour

Aucune valeur n'est retournée.

Exemples

Exemple #1 Yaf_Route_Regex via Yaf_Router::addRoute()

<?php

/**
 * Ajoute une route regex à la pile de routes de Yaf_Router
 */
Yaf_Dispatcher::getInstance()->getRouter()->addRoute(
    "name",
    new Yaf_Route_Regex(
        "#^/product/([^/]+)/([^/]+)#", // correspond aux URI commençant par "/product"
        array(
            'controller' => "product", // route vers le contrôleur product
        ),
        array(
            1 => "name", // $request->getParam("name") contient la première capture
            2 => "id",   // et $request->getParam("id") la seconde
        )
    )
);
?>

Exemple #2 Yaf_Route_Regex utilisant une capture comme nom de contrôleur

<?php

/**
 * Utilise une capture comme nom de contrôleur
 */
Yaf_Dispatcher::getInstance()->getRouter()->addRoute(
    "name",
    new Yaf_Route_Regex(
        "#^/product/([^/]+)/([^/]+)#i", // correspond aux URI commençant par "/product"
        array(
            'controller' => ":name", // la capture "name" (voir map) devient le contrôleur
        ),
        array(
            1 => "name", // $request->getParam("name") contient la première capture
            2 => "id",   // et $request->getParam("id") la seconde
        )
    )
);
?>

Exemple #3 Yaf_Route_Regex utilisant un groupe de capture nommé

<?php

/**
 * Utilise un groupe de capture nommé comme nom de contrôleur
 */
Yaf_Dispatcher::getInstance()->getRouter()->addRoute(
    "name",
    new Yaf_Route_Regex(
        "#^/product/(?<name>[^/]+)/([^/]+)#i", // correspond aux URI commençant par "/product"
        array(
            'controller' => ":name", // la capture "name" devient le contrôleur
        ),
        array(
            2 => "id", // le groupe 1 est nommé, seul le groupe 2 nécessite une entrée dans map
        )
    )
);
?>

Exemple #4 Yaf_Route_Regex via Yaf_Router::addConfig()

<?php

/**
 * Ajoute une route regex à la pile de routes de Yaf_Router via un tableau de configuration
 */
$config = array(
    "name" => array(
        "type"  => "regex",          // une route Yaf_Route_Regex
        "match" => "#(.*)#",         // correspond à n'importe quelle URI de requête
        "route" => array(
            'controller' => "product", // route vers le contrôleur product
            'action'     => "dummy",   // et vers l'action dummy
        ),
        "map" => array(
            1 => "uri", // $request->getParam("uri") contient l'URI correspondante
        ),
    ),
);

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

Voir aussi

+add a note

User Contributed Notes

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