全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

详解php框架Yaf路由重写

通常为了友好的URL格式,会进行站点URL的重写,可以在webserver(Nginx)的配置中进行rewrite,也可在在程序端进行

以下使用Yaf框架进行URL的重写,进行一些整理,方便日后查看

YAF的URL重写方式主要有以下几种,可以综合使用

方式1:在配置文件中进行

;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="#!"

之后在Bootstrap.php中添加初始化函数,函数名可按自己需求取,必需以_开头才会被调用

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

方式2:直接在程序中,以数组方式配置

以下函数是放在Bootstrap.php中

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

方式3:

  /**
  * 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,
      ),
    )
  );

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# Yaf框架路由重写  # php  # 路由重写  # ThinkPHP、Zend Framework2、Yaf、Laravel框架路由大比拼  # PHP扩展框架之Yaf框架的安装与使用  # PHP Yaf框架的简单安装使用教程(推荐)  # yii  # CI  # yaf框架+smarty模板使用方法  # 在PHP 7下安装Swoole与Yar  # Yaf的方法教程  # ubuntu14.04LTS安装nginx+mariaDB+php7+YAF的方法  # 基于yaf框架和uploadify插件  # 做的一个导入excel文件  # 查看并保存数据的功能  # PHP7.1安装yaf扩展的方法  # Ubuntu上安装yaf扩展的方法  # 详解Yaf框架PHPUnit集成测试方法  # Yaf框架封装的MySQL数据库操作示例  # 重写  # 自己的  # 在这里  # 放在  # 才会  # 也可  # 几种  # 可按  # 配置文件  # 大家多多  # 日后  # 路由协议  # 主要有  # simple  # PATH_INFO  # map  # amp  # module  # router  # extends 


相关文章: 如何通过PHP快速构建高效问答网站功能?  如何通过FTP服务器快速搭建网站?  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  建站之星展会模板:智能建站与自助搭建高效解决方案  焦点电影公司作品,电影焦点结局是什么?  建站之星如何修改网站生成路径?  西安大型网站制作公司,西安招聘网站最好的是哪个?  建站主机服务器选型指南与性能优化方案解析  php8.4新语法match怎么用_php8.4match表达式替代switch【方法】  建站之星客服服务时间及联系方式如何?  如何在西部数码注册域名并快速搭建网站?  Python文件管理规范_工程实践说明【指导】  官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站  建站之星伪静态规则如何设置?  如何在建站之星绑定自定义域名?  高性能网站服务器部署指南:稳定运行与安全配置优化方案  广州商城建站系统开发成本与周期如何控制?  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  深圳网站制作的公司有哪些,dido官方网站?  头像制作网站在线制作软件,dw网页背景图像怎么设置?  历史网站制作软件,华为如何找回被删除的网站?  建站主机助手选型指南:2025年热门推荐与高效部署技巧  网站制作服务平台,有什么网站可以发布本地服务信息?  如何在局域网内绑定自建网站域名?  招贴海报怎么做,什么是海报招贴?  制作宣传网站的软件,小红书可以宣传网站吗?  如何用PHP快速搭建高效网站?分步指南  建站之星后台密码如何安全设置与找回?  北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?  如何通过智能用户系统一键生成高效建站方案?  定制建站哪家更专业可靠?推荐榜单揭晓  如何在云虚拟主机上快速搭建个人网站?  已有域名能否直接搭建网站?  专业网站制作服务公司,有哪些网站可以免费发布招聘信息?  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  香港服务器网站推广:SEO优化与外贸独立站搭建策略  济南网站制作的价格,历城一职专官方网站?  如何在VPS电脑上快速搭建网站?  家庭服务器如何搭建个人网站?  为什么Go需要go mod文件_Go go mod文件作用说明  建站之星免费模板:自助建站系统与智能响应式一键生成  SQL查询语句优化的实用方法总结  大连网站设计制作招聘信息,大连投诉网站有哪些?  网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?  自助网站制作软件,个人如何自助建网站?  微信小程序 五星评分(包括半颗星评分)实例代码  已有域名建站全流程解析:网站搭建步骤与建站工具选择  如何高效利用亚马逊云主机搭建企业网站?  制作网站的过程怎么写,用凡科建站如何制作自己的网站?  外汇网站制作流程,如何在工商银行网站上做外汇买卖? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。