码迷,mamicode.com
首页 > Web开发 > 详细

php优秀框架codeigniter学习系列——CodeIgniter.php概览

时间:2018-05-05 11:17:33      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:3.1   5.4   使用   test   概览   exists   UI   状态   官方   

  CodeIgniter.php是CI框架的核心文件。它在前端控制器index.php之后运行,加载各类基础组件,执行请求。文件执行完成后,这次请求也就结束了。所以,该文只能对CodeIgniter.php做一个大致的讲解,中间如果遇到重要部分,会新写一篇日志单独详细讲解。

  CI框架的注释非常的详细和规范。官方对这个文件的解释就是 System Initialization File(系统初始化文件),加载基础类库和执行请求。它不同于index.php只是设置环境和定义重要路径,而是要深入框架的核心了。

  让我们一起来学习这个文件吧。

defined(‘BASEPATH‘) OR exit(‘No direct script access allowed‘);

第一行代码,如果没有定义‘BASEPATH’就退出,而该变量是在index.php文件中定义的。所以用意很明显,防止该文件被直接访问。CI框架的很多文件中都可以看到这行代码。

  

1 const CI_VERSION = ‘3.1.7‘;

定义CI框架的版本,而且是全局变量,每个框架都有类似的定义吧,为什么不使用define定义而是使用静态变量呢,不太清楚

 

/*
 * ------------------------------------------------------
 *  Load the framework constants
 * ------------------------------------------------------
 */
    if (file_exists(APPPATH.‘config/‘.ENVIRONMENT.‘/constants.php‘))
    {
        require_once(APPPATH.‘config/‘.ENVIRONMENT.‘/constants.php‘);
    }

    if (file_exists(APPPATH.‘config/constants.php‘))
    {
        require_once(APPPATH.‘config/constants.php‘);
    }

加载框架的常量。如果环境变量(product,development,test)文件夹存在,且文件夹中有constants.php文件,先加载。而且优先级也比后加载的高。constants.php文件定义的是一些不会去做改变的(用define定义)系统级的常量,比如文件可读写模式,退出状态码等。具体可以参考constants.php学习

这里有一个小技巧,很多框架在定义一个常量前会用defined去检测是否已定义,对于引用文件则会用file_exists,对于类是否定义则会用class_exists。防止重复定义。

 

技术分享图片
1 /*
2  * ------------------------------------------------------
3  *  Load the global functions
4  * ------------------------------------------------------
5  */
6     require_once(BASEPATH.‘core/Common.php‘);
View Code

引用常用函数文件。这个文件中的函数都是框架中经常用到的函数,也是核心的一些函数。参考common.php学习

 

Security procedures

  对于版本小于5.4的php,将全局变量$GLOBALS数组中的一些变量置为null,说明是出于安全因素。但是我没有找到这个安全因素的起源。

 

技术分享图片
1     set_error_handler(‘_error_handler‘);
2     set_exception_handler(‘_exception_handler‘);
3     register_shutdown_function(‘_shutdown_handler‘);
View Code

  自定义错误处理程序,异常处理程序,php中止执行处理程序。关于CI的错误和异常处理机制,请看。

 

php优秀框架codeigniter学习系列——CodeIgniter.php概览

标签:3.1   5.4   使用   test   概览   exists   UI   状态   官方   

原文地址:https://www.cnblogs.com/Andres/p/8988900.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!