重写Yaf路由,实现不同版本App调用不同接口

思路,app {version}版本,调用 /baseuri/module/version/controller/action

其中:
baseuri是网页的前缀
version是版本号

接下来我们将会用到yaf的路由重写,我用的是Yaf_Route_Regex,正则匹配,比较灵活。
重写Bootstrap来注册你的路由,代码如下:
 public function _initRoute(Yaf_Dispatcher $dispatcher) 
 {
     // 根据版本路由
     $base_url = $dispatcher->getRequest()->getBaseUri();
     $url = $dispatcher->getRequest()->getRequestUri();
     $request_uri = str_replace($base_url, '', $url);
     // 首先自己匹配出来version和controller
     preg_match('/module\/([^\/]+)\/([^\/]+)\/([^\/\?\#]+)/i', $request_uri, $match);
     $version = $match[1] ?? '';
     $controller = $match[2] ?? '';
     if ($version && $controller)
     {
       $route = new Yaf_Route_Regex(
          "/module\/([^\/]+)\/([^\/]+)\/([^\/\?\#]+)/i",
          array(
             'module' => "module",
             // 例如 Foo/v2/Api/index 重写为 Foo/Apiv2/index
             'controller' => strtolower($controller . $version),  
             'action' => ":action",
          ),
          array(
             1 => "version",
             2 => "controller", 
             3 => "action", 
          )
       );
       $dispatcher->getRouter()->addRoute('v2', $route);
       // 打印出module、controller、action查看是否对应
        // var_dump($dispatcher->getRequest()->getModuleName());
        // var_dump($dispatcher->getRequest()->getControllerName());
        // var_dump($dispatcher->getRequest()->getActionName());
        // die;
     }
 }
打开注释可以看到路由成功,那么接下来的第二个问题,让Apiv2继承Api.
在yaf中,如下写法是无法继承当前Controller目录下的其他控制器的。
class Apiv2Controller extends ApiController {}
是因为yaf默认路由的原因。这里有两种解决方法
  1. 将基础控制器写在Application目录下的controller中
  2. requier控制器文件
我采用的是第二种方式,第一种方式不符合接口的迭代方式
require_once(dirname(__FILE__) . '/Api.php');
class Apiv2Controller extends ApiController{

}
重新访问 /baseuri/module/v2/Api/index,得到与 /baseuri/module/Api/index相同的结果,改造成功!
如果你要改造url为 /baseuri/v2/module/Api/index的方式也是同样的道理。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Yaf Demo 是一个使用 Yaf 框架开发的示例项目,用于展示 Yaf 框架的基本用法和功能。想要下载 Yaf Demo 可以按照以下步骤进行: 1. 打开 Yaf Demo 的官方网站(可以通过搜索引擎搜索),在首页或者下载页面找到下载链接。 2. 点击下载链接,等待下载文件完成。通常 Yaf Demo 的下载文件是一个压缩包(例如 zip 或 tar.gz 格式)。 3. 下载完成后,解压缩下载的压缩包。可以使用系统自带的解压缩工具,或者第三方解压缩软件,将压缩包中的文件解压到指定目录。 4. 打开解压后的目录,你将会看到 Yaf Demo 的代码。其中包含了 Yaf 框架的核心文件、配置文件、控制器和视图等。 5. 根据 Yaf Demo 的要求配置环境。可能需要安装 PHP、MySQL 等相关软件,并进行一些配置操作。 6. 将 Yaf Demo 的代码部署到你的服务器或本地环境。可以使用 FTP 工具将代码上传到服务器,或者将代码放置到你的 Web 服务器的文件夹中。 7. 配置好数据库等相关信息。根据 Yaf Demo 的文档,修改配置文件中的数据库连接信息,确保 Yaf Demo 能够正确连接到数据库。 8. 打开浏览器,输入 Yaf Demo 的网址,访问 Yaf Demo。根据 Yaf Demo 的要求,在浏览器中输入对应的 URL 地址,即可查看 Yaf Demo 的功能和效果。 总结:通过以上步骤,你就可以下载并运行 Yaf Demo 了。不过,在下载和使用 Yaf Demo 之前,建议先了解 Yaf 框架的基本知识,以便更好地理解和使用 Yaf Demo。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值