Yii2创建控制器(createController)

本文详细解析Yii2框架中创建控制器的过程,包括模块、命名空间和控制器映射的处理,以及如何根据路由生成和执行控制器及动作。
摘要由CSDN通过智能技术生成
yii中创建控制器的是在application中的request通过UrlManager解析得出路由信息的,然后再由yii\base\Module中的
  1. public function runAction($route, $params = [])
方法来创建控制器,最后由控制器再执行相应的动作。

首先得明确,Yii中的路由分三种情况:
  • 第一种是带有模块的(module id/controller id/action id),
  • 第二种是带有命名空间(子目录)的(sub dir)/controller id/action id)
  • 第三种是只有控制器和动作的(controller id/action id)

这三个有优先顺序,所以在创建控制器的时候,也是先查看是否是模块类型的路由,如果是,则获取这个模块,再由这个模块来创建控制器
接着再判断是否是第二种带有命名空间的。

  1. public function createController($route)
  2. {
  3.     //如果路由为空,则使用默认的路由
  4.     if ($route === '') {
  5.         $route = $this->defaultRoute;
  6.     }

  7.     // double slashes or leading/ending slashes may cause substr problem
  8.     //去掉首尾的反斜杠(“/”),如果路由中包含有“//”,则返回false创建失败。
  9.     $route = trim($route, '/');
  10.     if (strpos($route, '//') !== false) {
  11.         return false;
  12.     }

  13.     /*
  14.      * 路由分三种情况,
  15.      * 一种是带模块id的(module id/controller id/action id),
  16.      * 一种是有命名空间(子目录
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值