为何选择开发过程当中的 CI 4 做为源码解读版本:(1)首先我选 CI 是由于它以前的稳定版都是相对比较轻量小巧的,并且能够认为是简单的。(2)为何没有选择目前稳定的 3.x 版是由于我我的认为这个版本由于历史包袱缘由确实在理念方面有些老了,用它没问题,可是学习它就不值得了。(3)选一个开发尚未稳定版的缘由:既然仅仅是学习,即便的不稳定版应该也不会耽误咱们去了解它,还有就是听说 CI 4 为了追赶潮流,用了不少的新特性,甚至直接提示 PHP 必须是7以上了。php
写本文的目的:学习为主,同时把心得分享给你们。html
CI 4 发布了正式版后如何:我会常常关注 CI 4 的进展,若是正式版发布了,而且架构没有太大变更,我会更新本文。git
版权声明:可转载,但不论任何媒体都须要在转载前与本人沟通(imustgxd*sina&cn),并在转载时注明出处。github
错误声明:本人水平有限,该系列文章中可能会出现低级错误甚至“南辕北辙”的状况发生,请用中肯非激进的语言指正。web
笔记时间:2017年4月。数据库
P.S. 有一本书叫作《PHP 6 高级编程》,而后 PHP 跳过了,但愿 CI 别跳过 4 ,不过无所谓啦,毕竟只是读一下源码而已。编程
下面进入正文:bootstrap
CI 4 开发版是在 github (https://github.com/bcit-ci/Co... 上下载的,直接点击 clone or download 下载 zip 包。segmentfault
目前 CI 4 的文档尚未定稿,不过能够做为参考,网址是:https://bcit-ci.github.io/Cod...缓存
参考文档中的提示,咱们把 CI 的zip包解压,而且网站根目录指向 public 文件夹。CI 4 参考了 Laravel 、 YII2 等流行框架的作法,不在将全部的源码都扔进 web 服务器的可访问目录,这样作会更安全些。举个简单例子,常常有黑客会找上传漏洞,而后把未经许可的文件上传到 web 目录,若是上传的是个 php 文件,同时又在里边加了一些高权限的代码,后果不堪设想,而若是是这种模式,那么就能够把 public 目录在发布时设置成只读模式,甚至设置成只执行 index.php 这一个脚本,那么就会安全多了。部署好后,咱们访问 http://localhost 若是看到了大大的 Welcome to CodeIgniter ,说明已经部署成功。
既然已经基本部署完毕,那么先来预览一下目录结构吧:
能够看到依旧是咱们熟悉的 CI 味道。
application 是存储咱们应用源码的位置。
/application /Config 存储配置信息 /Controllers 控制器存储位置 /Helpers 存储自定义的辅助函数 /Language 自定义的语言文件 /Libraries 自定义的类库 /Models 数据库模型以及业务逻辑 /Views 视图文件
public 是 web 服务器要指向的位置,另外一些 CSS 以及图片等资源文件也能够保存到这里。里面已经包含了 .htaccess 文件,默认就已经将 URL 路径中的 index.php 去掉了,同时已经处理好了 CSS , 图片 , html 等一些静态资源,确保能直接访问。
system 是 CI 核心源码存放位置,咱们须要解读的大部分源码都在这里。
CI 的各个核心模块以模块名为目录名分别存储在这个目录下。在后续的章节会根据须要介绍到一部分。
其中 bootstrap.php , CodeIgniter.php 是 CI 执行流程过程当中用到的核心文件。
bootstrap.php 会被 public 下的 index.php 调用,形象点说, index.php 是程序入口,就像是 PC 的开机键,bootstrap.php 就像是 BIOS 只负责基本程序的加载检测以及准备过程,如自动加载等,CodeIgniter.php 更像是 PC 的 OS ,全部的模块包括控制器、这种类库就像是应用软件同样被 CodeIgniter.php 调用并加载。
先扔一张所谓的结构图,供启发一下思路,注意,不是流程图。
此目录是写测试用例的地方,里边有个readme.md 文件,能够参考此文件部署以及书写测试用例。
顾名思义,是可写的文件夹,里边存 CI 的缓存文件、日志文件、以及上传文件。与源码关系不大,如今很少说,等须要时再聊聊。
本篇文章算是一个开头,整体预览一下 CI 的基本结构。下一篇文章会涉及到 index.php 和 bootstrap.php 。
此文能够转载,但转载前须要发邮件到imustgxd*sina.cn进行沟通,未沟通的均视做侵权。
转载同时需注明原文连接 (https://segmentfault.com/a/11... ,并保留此段文字。