标签: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‘);
引用常用函数文件。这个文件中的函数都是框架中经常用到的函数,也是核心的一些函数。参考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‘);
自定义错误处理程序,异常处理程序,php中止执行处理程序。关于CI的错误和异常处理机制,请看。
php优秀框架codeigniter学习系列——CodeIgniter.php概览
标签:3.1 5.4 使用 test 概览 exists UI 状态 官方
原文地址:https://www.cnblogs.com/Andres/p/8988900.html