Maison >développement back-end >tutoriel php >Analyse de la réécriture de route Yaf dans le framework php
Cet article présente principalement l'explication détaillée de la réécriture du routage Yaf dans le framework PHP. Le contenu est assez bon, je vais le partager avec vous maintenant et le donner comme référence.
Habituellement, l'URL du site sera réécrite pour un format d'URL convivial. Vous pouvez la réécrire dans la configuration du serveur web (Nginx), ou vous pouvez le faire côté programme
Le. Ce qui suit utilise le framework Yaf. Réécrivez l'URL et organisez-la pour une visualisation facile à l'avenir
Les méthodes de réécriture d'URL de YAF incluent principalement les éléments suivants, qui peuvent être utilisés en combinaison
Méthode 1 : dans Après avoir entré
;a rewrite route match request /product/*/* routes.route_name.type="rewrite" routes.route_name.match="/product/:name/:value" routes.route_name.route.controller=product routes.route_name.route.action=info ;a regex route match request /list/*/* routes.route_name1.type="regex" routes.route_name1.match="#^list/([^/]*)/([^/]*)#" routes.route_name1.route.controller=Index routes.route_name1.route.action=action routes.route_name1.map.1=name routes.route_name1.map.2=value ;a simple route match /**?c=controller&a=action&m=module routes.route_name2.type="simple" routes.route_name2.controller=c routes.route_name2.module=m routes.route_name2.action=a ;a simple router match /**?r=PATH_INFO routes.route_name3.type="supervar" routes.route_name3.varname=r ;a map route match any request to controller routes.route_name4.type="map" routes.route_name4.controllerPrefer=TRUE routes.route_namer.delimiter="#!"
dans le fichier de configuration, ajoutez la fonction d'initialisation dans Bootstrap.php Le nom de la fonction peut être choisi en fonction. vos propres besoins. Il doit commencer par _ pour être Appelant
<?php class Bootstrap extends Yaf_Bootstrap_Abstract{ public function _initConfig() { $config = Yaf_Application::app()->getConfig(); Yaf_Registry::set("config", $config); } public function _initRoute(Yaf_Dispatcher $dispatcher) { $router = $dispatcher->getRouter(); /** * we can add some pre-defined routes in application.ini */ $router->addConfig(Yaf_Registry::get("config")->routes); /** * add a Rewrite route, then for a request uri: * http://***/product/list/22/foo * will be matched by this route, and result: * * [module] => * [controller] => product * [action] => info * [method] => GET * [params:protected] => Array * ( * [id] => 22 * [name] => foo * ) * */ $route = new Yaf_Route_Rewrite( "/product/list/:id/:name", array( "controller" => "product", "action" => "info", ) ); $router->addRoute('dummy', $route); } ?>
Méthode 2 : Directement dans le programme, configurez
dans un tableau Les fonctions suivantes sont placées dans Bootstrap
public function _initRoute(Ap_Dispatcher $dispatcher) { //在这里注册自己的路由协议,默认使用static路由 $router = Ap_Dispatcher::getInstance()->getRouter(); $routeConfig = array( $router = Ap_Dispatcher::getInstance()->getRouter(); $routeConfig = array( "item" => array( "type" => "regex", "match" => "#^/(software|game)/(.*).html$#", "route" => array('action' => 'item'), "map" => array( 1 => 'data_type', 2 => 'docid' ), ), //正则匹配 "category" => array( "type" => "regex", "match" => "#^/(software|game|video)/(.*)/(list_(.*).html)?$#", "route" => array('action' => 'list' ), "map" => array( 1 => 'data_type', 2 => 'cid',4 => 'page_num' ), ), //使用动态结果 :a 表示action "name" => array( "type" => "rewrite", //Yaf_Route_Rewrite route "match" => "/user-list/:a/:id", //match only /user-list/开头的 "route" => array( 'controller' => "user", //route to user controller, 'action' => ":a", //使用动态的action ), ), ); $router->addConfig(new Ap_Config_Simple($routeConfig)); }
Méthode 3 en php :
/** * Add a rewrite route to Yaf_Router route stack */ Yaf_Dispatcher::getInstance()->getRouter()->addRoute("name", new Yaf_Route_rewrite( "/product/:name/:id/*", //match request uri leading "/product" array( 'controller' => "product", //route to product controller, ), ) );C'est tout pour cet article. L'intégralité du contenu, j'espère qu'il sera utile à l'étude de chacun. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois ! Recommandations associées :
À propos des méthodes de configuration indépendante et de configuration dynamique dans le framework thinkPHP5.0
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!