写在前面:为什么在开发过程中选择CI4作为源码解读版本:(1)首先我选择CI由于其之前的稳定版本都比较轻量紧凑,可以算得上简单。(2)之所以没有选择现在的稳定版3.x,是因为个人认为这个版本由于历史包袱,在概念上确实有点老了。使用它没有问题,但不值得学习它。(3)选择没有稳定版的开发版的原因:既然只是为了学习,即使是不稳定版也不应该耽误我们去理解它,据说CI4使用了很多新特性为了赶上潮流。甚至直接提示PHP必须在7以上。写这篇文章的目的:专注于学习,同时把心得分享给大家。CI4正式发布时会发生什么:我会经常关注CI4的进展,如果正式版发布且架构没有太大变化,我会更新这篇文章。版权声明:可转载,但任何媒体转载前需与本人(imustgxd*sina&cn)沟通,转载时注明出处。错误声明:本人水平有限,本系列文章可能存在低级错误甚至“自相矛盾”的情况。请使用公平和非激进的语言来纠正我。笔记时间:2017年4月。有一本书叫《PHP 6 高级编程》,然后PHP就跳过了,希望CI不要跳过4,不过没关系,毕竟我只是看了源码。输入下面的文字:CI4下载和基础部署CI4开发版是从github(https://github.com/bcit-ci/Co...上下载的,点击clone或者直接download下载zip包。目前CI4的文档还没有定稿,但是可以作为参考,网址是:https://bcit-ci.github.io/Cod...参考文档中的提示,我们解压CI的zip包,网站根目录指向public文件夹,CI4参考了Laravel、YII2等流行框架的做法,不是把所有的源代码都扔到web服务器的可访问目录,而是会更安全。举个简单的例子,黑客经常会发现上传漏洞,然后将未经授权的文件上传到web目录。如果上传的文件是php文件,并且在里面加了一些高权限的代码,后果不堪设想,而如果是这种模式,发布的时候可以把public目录设置成只读模式,甚至设置为只执行脚本index.php,这样会安全很多。部署完成后,我们访问http://localhost,如果看到大大的WelcometoCodeIgniter,就说明部署成功了。至此CI4源码目录已经基本部署完毕,我们先来预览一下目录结构:可以看到还是我们熟悉的CI风味。applicationapplication是存放我们的应用程序源代码的地方。/application/Config存放配置信息/Controllers控制器存放位置/Helpers存放自定义辅助功能/Language自定义语言文件/Libraries自定义类库/Models数据库模型和业务逻辑/Views视图文件publicpublic是webserver指向的位置,其他资源文件如CSS和图片也可以保存在这里。它已经包含.htaccess文件,URL路径中的index.php已默认删除。同时对一些CSS、图片、html等静态资源进行了处理,保证直接访问。systemsystem是存放CI核心源码的地方,我们需要解读的大部分源码都在这里。CI的每个核心模块都存放在这个目录下,有模块名和目录名。在后续章节中,将根据需要介绍其中的一部分。其中bootstrap.php和CodeIgniter.php是CI执行过程中用到的核心文件。bootstrap.php会被public下的index.php调用。说白了,index.php就是程序入口,就像PC的电源键,而bootstrap.php就像BIOS,只负责基本程序的加载检测和准备过程。比如自动加载等,CodeIgniter.php更像是PCOS,所有模块包括controller,这样的库,都像应用软件一样被CodeIgniter.php调用和加载。先抛个所谓的结构图,求启发。请注意,这不是流程图。test这个目录是写测试用例的地方。里面有个readme.md文件。您可以参考该文件部署和编写测试用例。顾名思义,writable就是一个可写的文件夹,存放CI缓存文件、日志文件、上传文件。和源码关系不大,现在先不讲,有需要的时候再讲。总结一下这篇文章是一个开始,对CI的基本结构做一个大概的预览。下一篇文章将介绍index.php和bootstrap.php。本文可转载,但转载前需发邮件至imustgxd*sina.cn进行交流,未交流的视为侵权。转载时必须注明原文链接(https://segmentfault.com/a/11...),并保留该段文字。
