资讯专栏INFORMATION COLUMN

Codeigniter 4.0-dev 版源码学习笔记之一——前言以及 CI 4 预览

MSchumi / 2970人阅读

摘要:版权声明可转载,但不论任何媒体都需要在转载前与本人沟通,并在转载时注明出处。的各个核心模块以模块名为目录名分别存储在这个目录下。下一篇文章会涉及到和。此文可以转载,但转载前需要发邮件到进行沟通,未沟通的均视作侵权。

写在前面:

为什么选择开发过程中的 CI 4 作为源码解读版本:(1)首先我选 CI 是因为它之前的稳定版都是相对比较轻量小巧的,而且可以认为是简单的。(2)为什么没有选择目前稳定的 3.x 版是因为我个人认为这个版本因为历史包袱原因确实在理念方面有些老了,用它没问题,但是学习它就不值得了。(3)选一个开发还没有稳定版的原因:既然仅仅是学习,即使的不稳定版应该也不会耽误我们去了解它,还有就是据说 CI 4 为了追赶潮流,用了很多的新特性,甚至直接提示 PHP 必须是7以上了。

写本文的目的:学习为主,同时把心得分享给大家。

CI 4 发布了正式版后如何:我会经常关注 CI 4 的进展,如果正式版发布了,并且架构没有太大变动,我会更新本文。

版权声明:可转载,但不论任何媒体都需要在转载前与本人沟通(imustgxd*sina&cn),并在转载时注明出处。

错误声明:本人水平有限,该系列文章中可能会出现低级错误甚至“南辕北辙”的情况发生,请用中肯非激进的语言指正。

笔记时间:2017年4月。

P.S. 有一本书叫做《PHP 6 高级编程》,然后 PHP 跳过了,希望 CI 别跳过 4 ,不过无所谓啦,毕竟只是读一下源码而已。

下面进入正文:

CI 4 的下载和基本部署

CI 4 开发版是在 github (https://github.com/bcit-ci/Co... 上下载的,直接点击 clone or download 下载 zip 包。

目前 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 4 源码目录

既然已经基本部署完毕,那么先来预览一下目录结构吧:

可以看到依旧是我们熟悉的 CI 味道。

application

application 是存储我们应用源码的位置。

/application
        /Config         存储配置信息
        /Controllers    控制器存储位置
        /Helpers        存储自定义的辅助函数
        /Language       自定义的语言文件
        /Libraries      自定义的类库
        /Models         数据库模型以及业务逻辑
        /Views          视图文件
public

public 是 web 服务器要指向的位置,另一些 CSS 以及图片等资源文件也可以保存到这里。里面已经包含了 .htaccess 文件,默认就已经将 URL 路径中的 index.php 去掉了,同时已经处理好了 CSS , 图片 , html 等一些静态资源,确保能直接访问。

system

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 调用并加载。

先扔一张所谓的结构图,供启发一下思路,注意,不是流程图。

test

此目录是写测试用例的地方,里边有个readme.md 文件,可以参考此文件部署以及书写测试用例。

writable

顾名思义,是可写的文件夹,里边存 CI 的缓存文件、日志文件、以及上传文件。与源码关系不大,现在不多说,等需要时再聊聊。

总结

本篇文章算是一个开头,总体预览一下 CI 的基本结构。下一篇文章会涉及到 index.php 和 bootstrap.php 。

此文可以转载,但转载前需要发邮件到imustgxd*sina.cn进行沟通,未沟通的均视作侵权。
转载同时需注明原文链接 (https://segmentfault.com/a/11... ,并保留此段文字。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/22898.html

相关文章

  • Codeigniter 4.0-dev 源码学习笔记之二——入口以及初始化操作

    摘要:通过这个函数可以很方便的在程序运行期间执行很多常见操作。此文可以转载,但转载前需要发邮件到进行沟通,未沟通的均视作侵权。 index.php index.php 是整个框架的入口文件,也就是说所有的请求都要从它这里开始。因为 index.php 源码非常简洁,那么我们直接放一张源码截图,按着截图说一下源码。 showImg(https://segmentfault.com/img/re...

    _ivan 评论0 收藏0
  • Codeigniter 4.0-dev 源码学习笔记之三——核心文件 Codeigniter.ph

    摘要:行,是否强制访问。行,尝试处理此次请求,详细见方法。至此,的执行主流程完毕。小结是的核心文件,它被调用后,完成了诸多的主流程操作。此文可以转载,但转载前需要发邮件到进行沟通,未沟通的均视作侵权。 前言 Codeigniter.php 是 CI 4 的核心所在,在这里接收并处理了 request 请求,安全检查,缓存处理, URL 解析以及路由匹配,执行过滤器,加载运行 Controll...

    alighters 评论0 收藏0
  • Codeigniter 4.0-dev 源码学习笔记之四——详细路由过程

    摘要:行,判断如果为空,那么返回默认路由。行,把处理完毕后找到的返回。方法该方法是自动按着约定规则去目录去找路由的过程。此文可以转载,但转载前需要发邮件到进行沟通,未沟通的均视作侵权。 前言 我个人觉得在当前 MVC 流行的架构下,要想去了解一个框架,或者是一个基于此架构下的应用程序,最好的入手方式就是先看路由,虽然路由不是 MVC 里的任何一个,但是知道了路由的来龙去脉就知道了整个框架或者...

    NSFish 评论0 收藏0
  • Codeigniter 4.0-dev 源码学习笔记之五——相对于 3.x 的变化

    摘要:支持命名空间是没有支持命名空间的。配置文件不再是简单数组了新的配置文件是以对象组织的,各个配置以对象的属性形式暴露出来。此文可以转载,但转载前需要发邮件到进行沟通,未沟通的均视作侵权。 前言 CI 为了追上大家的脚步,这次跨了一大步,尽量使用了更多的流行设计理念,甚至连 PHP 的支持版本都是从 7 开始起步的。我在之前阅读源码的同时也发现了很多变化的地方,在此把已经发现的列举出来,不...

    Youngdze 评论0 收藏0
  • Codeigniter 4.0-dev 源码学习笔记之七—— View 视图

    摘要:行处理视图文件名后缀。结语从源码上看,使用了原始作为模版机制使得视图逻辑非常简单。无非也就是把视图进来,用输出缓冲把执行结果拿到即可。此文可以转载,但转载前需要发邮件到进行沟通,未沟通的均视作侵权。 前言 CI 的 View 没有像 Laravel 等一些流行框架一样设计的那么重,有自己的一套模版机制,CI 一直采用纯天然的 PHP 模板形式,纯天然的好处是不用再学习一套模板语言了,缺...

    LiangJ 评论0 收藏0

发表评论

0条评论

MSchumi

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<