CodeIgniter 3 源码学习笔记《一》
CodeIgniter 是一套给 PHP 网站开发者使用的应用程序开发框架和工具包。 它的目标是让你能够更快速的开发,它提供了日常任务中所需的大量类库, 以及简单的接口和逻辑结构。通过减少代码量,CodeIgniter 让你更加专注 于你的创造性工作。
http://codeigniter.org.cn/user_guide/general/welcome.html
下图说明了整个系统的数据流程:
- index.php 文件作为前端控制器,初始化运行 CodeIgniter 所需的基本资源;
- Router 检查 HTTP 请求,以确定如何处理该请求;
- 如果存在缓存文件,将直接输出到浏览器,不用走下面正常的系统流程;
- 在加载应用程序控制器之前,对 HTTP 请求以及任何用户提交的数据进行安全检查;
- 控制器加载模型、核心类库、辅助函数以及其他所有处理请求所需的资源;
- 最后一步,渲染视图并发送至浏览器,如果开启了缓存,视图被会先缓存起来用于 后续的请求。
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.php\system\application平级。
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框架的入口文件,下一节重点分析分析。