一、执行控制器中的方法本文的请求地址为配置的域名。请求地址通过上文可以知道$instance的值就是app\index\controller\Index的实例。这块也是存在中间件的概念,依然如此中间件会在后文中单独提到,这里不做解释。
一、执行控制器中的方法本文的请求地址为配置的域名。
通过上文可以知道 这块也是存在中间件的概念,依然如此中间件会在后文中单独提到,这里不做解释。 在这里 这里是在使用访问数组的形式访问对象,所以使用的是ArrayAccess的形式,这俩种概念一定要区分清楚。
接下来就会执行获取方法名,至于这个方法名怎么获取的是在本类的init方法执行的,这里只需要知道返回的是 在这里需要注意的就是这行代码
假如现在给这个操作方法后缀设置一个值会变成什么样子呢! 给添加一个kaka的值,进行访问一下看会是什么结果。
这个时候进行访问会提示indexkaka的这个方法不存在,是不是清晰可见了,说明这个参数是在为所有的方法名追加一个kaka。
对获取当前操作名的代码进行扩展完成之后,紧接着就是 对于这里的is_callable俩个参数通过上文都知道是什么了,第一个参数为 那么 很明显这里会返回一个true,因为在index类里边存在index方法的。 这里在做测试之前一定要把刚刚在app的配置文件中配置的方法名后缀那个给取消掉。 通过这个 第一种情况:类里边存在可执行的方法
为了测试带有参数的这一段代码,我们需要对路由地址进行一点改动。
在之前没有使用路由,而是直接使用的默认地址,接下来将使用这个路由地址
使用这个路由地址进行一下数据的打印,可以看到就是我们设置的路由参数。
这段获取请求变量的方法会进入到 框架是如何获取参数的 访问地址:http://www.source.com/index.php/hello/hello 在上文知道是通过 根据流程代码会执行到下图,根据获取的请求方式来使用对应的方式来获取参数,在这里需要明确的是我们使用的是get请求。 所以代码会执行到 由于咔咔是使用路由方式进行的请求所以,在这里框架专门为路由封装了一个获取请求参数。
来到这个
在之前路由的那一期文章中在获取到路由参数的时候会把参数合并到request的route属性。
所以说
这时执行流程会执行到获取变量 支持过滤和默认值,在上文中
这里返回的结果会返回给上文我们开始解析的地方,也就是说这个
第二种情况:类里边不存在可执行的方法 当第一种判断执行
先来请求的一个没有设置的路由地址,看会返回什么。
根据代码给的提示,我们来到index控制器建立一个
根据打印结果就可以看出来当访问的方法不存在时就会去执行
那么这个方法是怎么执行的呢!这种执行方式就是利用反射机制来实现的,关于反射咔咔之前专门出了一篇文章来讲解的,但是大家还是需要对着文档进行阅读查看。 第三种情况:类里边不存在可执行的方法也不存在_empty方法 这种情况就比较简单了,就是直接返回错误信息,关于这里异常处理咔咔也会在后文说到。
三种情况执行完 三种情况分析完了,最后都会去执行统计的方法。 调用反射执行类的方法 支持参数绑定,也就说这里的闭包执行流程到这里就执行完了。 关于后边的自动请求,在第五节中详细说明。
二、路由地址是怎么进行控制器实例化的在上一节中我们对路由进行了三四期的讲解,最终讲解的位置就路由调度,那么设置的路由是如何执行呢! 接下来使用这个路由作为案例
还记得在开始进行路由检测时的返回值是什么吗?请看下图
当时没有对接下里的代码进行详解,直接说明了实例化控制器,现在要说的就是 在这里 所以说代码会执行到下图位置,设置或者获取当前请求的调度信息
通过在控制器实例化这里进行打印会发现在这里的返回的值是
来到init方法对result做打印查看结果,使用的是路由地址
你知道到为什么这里的值发生改变了吗? 在上文打印出来的值为下图,为什么在这里就是上图的呢!
在路由那一节中最后一步就是发起路由调度,最后调用了一个路由到模块/控制器/操作这个方法。
这个方法
根据代码追踪可以看到其实就是
来到
在
来自: 网络收集
上一篇:sap系统是什么意思 下一篇:jpg文件通常是什么 全部回复(0)相关分类 微信:xu08290201 QQ:75283535
返回顶部 |
