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。
1 2 3 4 5 6 7 8 9 | /* *--------------------------------------------------------------- * 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | /* *--------------------------------------------------------------- * 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
1 2 3 4 5 6 7 8 9 | $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的系统文件的入口文件
1 2 3 4 5 6 7 8 | /* * -------------------------------------------------------------------- * LOAD THE BOOTSTRAP FILE * -------------------------------------------------------------------- * * And away we go... */ require_once BASEPATH. 'core/CodeIgniter.php' ; |
CodeIgniter.php作为整个CI框架的入口文件,下一节重点分析分析。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步