zoukankan      html  css  js  c++  java
  • CodeIgniter 3 源码学习笔记《一》

    CodeIgniter 是一套给 PHP 网站开发者使用的应用程序开发框架和工具包。 它的目标是让你能够更快速的开发,它提供了日常任务中所需的大量类库, 以及简单的接口和逻辑结构。通过减少代码量,CodeIgniter 让你更加专注 于你的创造性工作。

    http://codeigniter.org.cn/user_guide/general/welcome.html

    下图说明了整个系统的数据流程:

    CodeIgniter 程序流程

    1. index.php 文件作为前端控制器,初始化运行 CodeIgniter 所需的基本资源;
    2. Router 检查 HTTP 请求,以确定如何处理该请求;
    3. 如果存在缓存文件,将直接输出到浏览器,不用走下面正常的系统流程;
    4. 在加载应用程序控制器之前,对 HTTP 请求以及任何用户提交的数据进行安全检查;
    5. 控制器加载模型、核心类库、辅助函数以及其他所有处理请求所需的资源;
    6. 最后一步,渲染视图并发送至浏览器,如果开启了缓存,视图被会先缓存起来用于 后续的请求。

    index.php作为web请求的入口文件,先分析学习一些index.php文件。

    1、确定当前环境,生产?研发?测试? 然后针对错误信息级别进行设置。
    2、设置CI的核心代码文件夹的名称,默认值是system。

    /*
     *---------------------------------------------------------------
     * SYSTEM DIRECTORY NAME
     *---------------------------------------------------------------
     *
     * This variable must contain the name of your "system" directory.
     * Set the path if it is not in the same directory as this file.
     */
    $system_path = 'system';
    

    例如:把system文件夹名称更改为cisys,这里则需要把$system_path = 'cisys';,建议是把system修改以下名称,以保证系统目录的文件夹的独特性!

    3、设置webapp的文件夹的名称,默认值application

    /*
     *---------------------------------------------------------------
     * APPLICATION DIRECTORY NAME
     *---------------------------------------------------------------
     *
     * If you want this front controller to use a different "application"
     * directory than the default one you can set its name here. The directory
     * can also be renamed or relocated anywhere on your server. If you do,
     * use an absolute (full) server path.
     * For more info please see the user guide:
     *
     * https://codeigniter.com/user_guide/general/managing_apps.html
     *
     * NO TRAILING SLASH!
     */
    $application_folder = 'application';
    

    例如,两个application共用一套CI框架也是可行的,在实际项目当中,把一个application当成C端平台,把另一个application当成B端平台,这样这两个application完全可以共用一套CI框架。这里如何设置呢?第一个appcaliton为http://www.xxx.com/,第二个application为http://www.xxx.com/admin

    $url = $_SERVER['REQUEST_URI']?$_SERVER['REQUEST_URI']:$_SERVER['QUERY_STRING'];
    if(strpos($url,'admin')!==false){
    	
    	$application_folder = 'admin';
    }
    else{
    	
    	$application_folder = 'application';
    }
    

      

    4、设置view视图文件夹的名称,默认值为空,则代表view文件夹在application/view下,若有值则表示此文件夹与index.phpsystemapplication平级。

    5、获取验证system的路径的正确性。

    6、获取验证application的路径的正确性。

    7、获取验证view的路径的正确性。
    8、加载CI的系统文件的入口文件

    /*
     * --------------------------------------------------------------------
     * LOAD THE BOOTSTRAP FILE
     * --------------------------------------------------------------------
     *
     * And away we go...
     */
    require_once BASEPATH.'core/CodeIgniter.php';
    

      CodeIgniter.php作为整个CI框架的入口文件,下一节重点分析分析。

  • 相关阅读:
    排序--插入排序(Insertion Sort)Java实现
    汉诺塔--递归和非递归 Java实现
    关于mysql使用utf8编码在cmd窗口无法添加中文数据的问题以及解决 方法二
    mysql在cmd中查询到的汉字乱码问题解决 方法一
    mysql绿色版安装以及遇到的问题
    关于按下回车键自动提交表单问题解决
    获取iframe引入页面内的元素
    ORACLE 中如何截取到时间的年月日中的年、月、日
    Jboss 7配置日志
    java中将科学技术发转为正常数据
  • 原文地址:https://www.cnblogs.com/ficohu/p/5701664.html
Copyright © 2011-2022 走看看