初始kohana(二)-----------kohana3.3 生命周期_kohana config初始内容-程序员宅基地

入口:index.php
    获取地区
    常规常量设置
    引入application\classes\common\env文件获取开发环境
    引入application\classes\common\area标记地区
    
    引入 bootstrap 启动程序
        引入Kohana_Core核心类
            初始化程序
        引入 kohana继承空类
        
        设置时区、语言、自动加载方法
        设置kohana初始选项
        加载logs、config读取类
        enable kohana模块
        
        设置路由
            此处通过set方法保存路由信息
            
                public static function set($name, $uri = NULL, $regex = NULL)
                {
                    return Route::$_routes[$name] = new Route($uri, $regex);
                }
            在request实例化时会读取路由信息进行匹配
        
    执行request
        echo Request::factory()
        
        
            Creates a new request object for the given URI. New requests should be
            created using the [Request::instance] or [Request::factory] methods.
            
            
            1.获取请求配置信息
                cli模式
                
                http模式
                    SERVER_PROTOCOL、REQUEST_METHOD、HTTPS、HTTP_REFERER、HTTP_USER_AGENT、HTTP_X_REQUESTED_WITH、HTTP_X_FORWARDED_FOR
                    查询http协议中是否设定,未设定则取项目默认值
                    
            2.Request::$initial = $request = new Request($uri, $cache);
            实例化Request
            
            3.设置protocol 默认为 http/1.1 并保存 get->query  post->post 数据
                设置安全、请求方法、referrer、body
            
            
            
        execute()
        
            * Processes the request, executing the controller action that handles this
            * request, determined by the [Route].
             *
             * 1. Before the controller action is called, the [Controller::before] method
             * will be called.
             * 2. Next the controller action will be called.
             * 3. After the controller action is called, the [Controller::after] method
             * will be called.    

            通过 request_client 实例调用excute方法,创建一个response实例,然后通过request_client_internal调用excute_request方法
            通过反射类来调用控制器中的方法返回response,同时在excute_request中计算方法耗时和内存消耗
                关键代码:
                        // Load the controller using reflection
                        $class = new ReflectionClass($prefix.$controller);
                        
                        // Create a new instance of the controller
                        $controller = $class->newInstance($request, $response);

                        // Run the controller's execute() method
                        $response = $class->getMethod('execute')->invoke($controller);
        
        
                执行excute时,会先调用before(),再执行action,最后执行 after()
                
                
            最后执行response回调函数(暂时未深入了解用法)
        
        send_headers()
        
            Sends the response status and all set headers.
            主要设置协议头部返回信息
            
            
        body();      echo 最后的内容 生命周期结束
        
        if ($content === NULL)
        {
            // Act as a getter
            return $this->_body;
        }

        // Act as a setter
        $this->_body = $content;

        return $this;
        

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/github_37501169/article/details/104398736

智能推荐

计算机更新bios,win7bios升级教程_win7电脑主板bios升级的方法-程序员宅基地

文章浏览阅读933次。2019-10-25 17:35:37  浏览量:20172技嘉主板如何在线更新bios程序?bios是存储输入输出设备相关设置的程序,bios也是和软件一样,有版本的区别,bios版本不同,所能发挥的功能也有区别。bios程序能不能升级,需要查看主板官网有没有提供新版本的更新程序,如果有就可以升级。这边系统城小编教大家技嘉主板升级bios的方法。2016-07-21 13:50:35  浏览量:..._win7如何刷新bios

第86章、系统服务之TELEPHONY_SERVICE(从零开始学Android)-程序员宅基地

文章浏览阅读517次。  TelephonyManager类主要提供了一系列用于访问与手机通讯相关的状态和信息的get方法。其中包括手机SIM的状态和信息、电信网络的状态及手机用户的信息。在应用程序中可以使用这些get方法获取相关数据。 TelephonyManager类的对象可以通过Context.ge..._android telephony_service

富文本编译器_ogeditor-程序员宅基地

文章浏览阅读1.9k次。ogEditor 是一个在线的所见即所得的 HTML 编辑器,内置文件管理器支持。Redactor[Textarea - 富文本编辑器 ]Redactor 是一个 jQuery 的插件,实现在线所见即所得的 HTML 编辑器。界面简洁,加载速度快。不过不支持 IE6 浏览器,如果你不需要考虑 IE6 不妨试试。CuteEditor[Textarea - 富文本编_ogeditor

互动直播的技术细节和解决方案实践经验谈_webrtc连麦-程序员宅基地

文章浏览阅读4.4k次,点赞2次,收藏3次。互动直播系统介绍_webrtc连麦

js 获取DOM元素样式_js获取dom样式-程序员宅基地

文章浏览阅读7.8k次。 HTML的样式写入方法有:1、行内样式;2、内嵌样式;3、外联样式表。 行内样式:一般是用style写在dom元素上的,例如:<div style='height:200px;'></div>; 内嵌样式:一般是用style写在head标签内的。<style type='text/css'></style>; 外联样式:一般..._js获取dom样式

python 逆序对的数量【简单易懂,代码直接运行】_python逆序对个数-程序员宅基地

文章浏览阅读2.5k次,点赞8次,收藏16次。python 逆序对的数量【简单易懂,代码直接运行】给定一个长度为 n 的整数数列,请你计算数列中的逆序对的数量。逆序对的定义如下:对于数列的第 i 个和第 j 个元素,如果满足 i<j 且 a[i]>a[j],则其为一个逆序对;否则不是。输入格式第一行包含整数 n,表示数列的长度。第二行包含 n 个整数,表示整个数列。输出格式输出一个整数,表示逆序对的个数。数据范围1≤n≤100000,数列中的元素的取值范围 [1,109]。输入样例:62 3 4 5 6 1输出样_python逆序对个数

随便推点

多线程——这些锁策略(乐观悲观锁、读写锁、轻量级重量级锁、公平非公平锁、可重入锁)你知道吗?_读写锁连续加锁-程序员宅基地

文章浏览阅读1.7k次,点赞15次,收藏2次。各种锁策略1、乐观锁VS悲观锁2、读写锁3、重量级锁vs轻量级锁.4、挂起等待锁VS自旋锁5、公平锁Vs非公平锁6、可重入锁7、死锁的典型场景1、乐观锁VS悲观锁乐观锁: 世界大概率是和平的,多个线程竞争一 把锁的概率会很低.(效率高)悲观锁: 世界大概率是出问题的,多个线程竞争一 把锁的概率会很高,会付出更多的成本来进行锁冲突的处理(更安全)两种想法没有优劣之分,要根据具体场景来进行使用.2、读写锁把加锁操作分成了两种.a)读锁b)写锁读锁和读锁之间是没有互斥的(不存在锁竞争)读锁和写_读写锁连续加锁

OpenCV saturate_cast防溢出_opencv 点赋值 防止溢出-程序员宅基地

文章浏览阅读2.7k次,点赞2次,收藏5次。saturate_cast函数在OpenCV中的作用是防数据溢出,我们在直接操作像素点的时候,如果数值结果是赋值或者超过了255的话,在图片中是没办法显示的,这就是防数据溢出的作用,那么什么时候会有数据溢出的风险呢,这种情况在图像卷积操作的时候比较常见。 下面我们举个栗子吧: 选择一个3*3的锐化作用的卷积核,设计如下: (0, -1, 0, -1, 5, -1,_opencv 点赋值 防止溢出

6、js控制,设置图片跟随窗口(主要是根据高度变化)大小变化,按比例缩放_前端图片大小随着高度而变化-程序员宅基地

文章浏览阅读2k次。html:&lt;div class="container"&gt; &lt;img src="https://timgsa.baidu.com/timg?image&amp;quality=80&amp;size=b9999_10000&amp;sec=1545633786675&amp;di=1b43ca4fe89c44cc06b026d21f646e91&amp;imgtype=0..._前端图片大小随着高度而变化

语音变速、变调方法汇总_sox 变调-程序员宅基地

文章浏览阅读1.2k次。介绍三种语音变速、变调方法:1. 变速变调;2. 变速不变调;3. 变调不变速。_sox 变调

Understand简明分析_understand圈复杂度-程序员宅基地

文章浏览阅读2.3k次。Understand全称为Scientific Toolworks Understand,,是一款源代码阅读分析软件,使用它可以大大提高代码阅读效率。此软件亦有架构分析,代码评审与度量,生成软件质量统计与报表等功能。 官方网站:https://www.scitools.com/features/metrics.php 一.安装 傻瓜式安装,安装过程..._understand圈复杂度

TCP/IP网络基础详解_《tcp/ip协议详解》计算机网络作为很基础的-程序员宅基地

文章浏览阅读564次。TCP/IP协议(一)网络基础知识参考书籍为《图解tcp/ip》-第五版。这篇随笔,主要内容还是TCP/IP所必备的基础知识,包括计算机与网络发展的历史及标准化过程(简述)、OSI参考模型、网络概念的本质、网络构建的设备等下面是协议层从底层至顶层的一个模型图:一、计算机网络的背景1.1 计算机的发展有人说:“20世纪最伟大的发明就是计算机”,自诞生伊始,计算机经历了一系列发展,从大型通用计算机、超级计算机、小型机、个人电脑、工作站以及现如今笔记本、平板、智能手机等,计算机已经彻底融入了我们的生活_《tcp/ip协议详解》计算机网络作为很基础的

推荐文章

热门文章

相关标签