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框架的入口文件,下一节重点分析分析。

  • 相关阅读:
    我爱java系列之---【微服务间的认证—Feign拦截器】
    我爱java系列之---【设置权限的三种解决方案】
    581. Shortest Unsorted Continuous Subarray
    129. Sum Root to Leaf Numbers
    513. Find Bottom Left Tree Value
    515. Find Largest Value in Each Tree Row
    155. Min Stack max stack Maxpop O(1) 操作
    painting house
    Minimum Adjustment Cost
    k Sum
  • 原文地址:https://www.cnblogs.com/ficohu/p/5701664.html
Copyright © 2011-2022 走看看