Dutch PHP Conference 2027

Yaf_Router::route

(Yaf >=1.0.0)

Yaf_Router::routeRoute une requête

Description

public function Yaf_Router::route(Yaf_Request_Abstract $request): ?bool

Route la requête avec les routes enregistrées.

Les routes sont essayées dans l'ordre inverse de leur enregistrement. La première route qui revendique la requête l'emporte ; la requête est alors marquée comme routée (voir Yaf_Request_Abstract::setRouted()) et le nom de la route gagnante est enregistré, ce qui permet de le récupérer via Yaf_Router::getCurrentRoute().

La route par défaut, enregistrée sous le nom _default, est Yaf_Route_Static, sauf si une route par défaut personnalisée est configurée.

Liste de paramètres

request

L'instance de Yaf_Request_Abstract à router.

Valeurs de retour

Retourne true si la requête a été routée, ou false si aucune route ne correspond (par exemple, une URI mal formée), ce qui arrête le distributeur.

Exemples

Exemple #1 Exemple avec Yaf_Router::route()

<?php
class Bootstrap extends Yaf_Bootstrap_Abstract
{
    public function _initRoute(Yaf_Dispatcher $dispatcher)
    {
        $router = $dispatcher->getRouter();

        $router->addRoute("rewrite", new Yaf_Route_Rewrite(
            "/product/:id",
            ["controller" => "product", "action" => "detail"]
        ));

        /* route une requête construite à la main, par exemple dans un test unitaire */
        $request = new Yaf_Request_Simple("CLI", null, "index.php",
            "/product/123", null);

        if ($router->route($request)) {
            var_dump($router->getCurrentRoute());
            var_dump($request->getControllerName());
            var_dump($request->getActionName());
            var_dump($request->getParam("id"));
        } else {
            /* aucune route ne correspond */
        }
    }
}
?>

Résultat de l'exemple ci-dessus est similaire à :

string(7) "rewrite"
string(7) "product"
string(6) "detail"
string(3) "123"

Voir aussi

add a note

User Contributed Notes

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