文档章节

Codeigniter原始碼分析

尤川豪
 尤川豪
发布于 2014/06/18 11:30
字数 351
阅读 18
收藏 0

利用Codeigniter工作半年了

最近想深入了解CI框架的底層運作

所以跟朋友一起,打算把整份source code讀過一遍

並且加上我們的一些解釋與批評

http://howtomakeaturn.github.io/ci/menu

寫了幾份review之後,慢慢理解了一些對CI的批評是從何而來。

我目前看到最討厭的部份是core/common.php定義了大量的全域函數。

最可怕的是定義了load_class函數來負責載入絕大部分的類別。

這直接導致:

1、無法在建構式傳入參數

2、呼叫載入的類別要寫$URI =& load_class('URI', 'core'),真的很醜

3、所有相關類別因此都嚴重相依,無法把元件獨立出去在CI之外使用

另外,我還發現部份類別並沒有專注在「一個任務上」。例如Output類別裡面有計算benchmark相關的code,違反了single responsibility principle,增加了維護與理解的難度。

也因此,整體說來,source code並不好讀。

目前只review了一小部份,還會繼續下去。

想收集更多意見並且與大家討論,希望有興趣研究codeigniter原始碼的朋友,一起加入我們:)

https://github.com/howtomakeaturn/Analyze-Codeigniter


© 著作权归作者所有

共有 人打赏支持
尤川豪
粉丝 3
博文 1
码字总数 351
作品 1
台北
程序员
CodeIgniter3.0项目推荐

权限系统 https://github.com/benedmunds/CodeIgniter-Ion-Auth 国际化 https://github.com/bcit-ci/codeigniter3-translations session存储库 https://github.com/cnsaturn/codeigniter-my......

果树啊
2015/03/13
0
1
CodeIgniter + uploadify 在 IE 下会话丢失问题的解决方案

最近需要学习并用CodeIgniter框架对一个项目进行二次开发,由于之前一直都是使用Symfony做项目,所以再换到CodeIgniter项目上还是比较顺畅的。不过相比较之下,感觉CodeIgniter比Symfony要轻...

random123
2014/06/23
0
0
CodeIgniter 框架分析

入口文件 入口文件主要完成下列工作: 1) 指定 CodeIgniter 框架所在目录; 2) 定义 APPPATH 常量,指示应用程序文件根目录; 3) 载入 codeigniter/CodeIgniter.php 文件,启动框架。 codeig...

那些年我们一起
2012/08/10
0
17
codeigniter中创建自己的类库

当我们使用术语"类库"时,我们一般指的是位于libraries 文件夹中的类,它们在wiki的"类库参考"这个板块被讨论.在当前这个话题中,我们将讨论如何在 application/libraries 文件夹中建立你自己的...

mickelfeng
2013/05/14
0
1
实战jQuery和PHP CodeIgniter表单验证

前言   在Web建站中,表单的合法性验证是十分重要的一个环节,其中包括客户端浏览器的Javascript的验证和服务端的验证。在本文中将指导读者使用jQuery中的validate验证框架实现浏览器端的验...

彼得
2014/03/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

初级开发-编程题

` public static void main(String[] args) { System.out.println(changeStrToUpperCase("user_name_abc")); System.out.println(changeStrToLowerCase(changeStrToUpperCase("user_name_abc......

小池仔
今天
5
0
现场看路演了!

HiBlock
昨天
16
0
Rabbit MQ基本概念介绍

RabbitMQ介绍 • RabbitMQ是一个消息中间件,是一个很好用的消息队列框架。 • ConnectionFactory、Connection、Channel都是RabbitMQ对外提供的API中最基本的对象。Connection是RabbitMQ的s...

寰宇01
昨天
9
0
官方精简版Windows10:微软自己都看不过去了

微软宣布,该公司正在寻求解决方案,以减轻企业客户的Windows 10规模。该公司声称,企业客户下载整个Windows 10文件以更新设备既费钱又费时。 微软宣布,该公司正在寻求解决方案,以减轻企业...

linux-tao
昨天
19
0
TypeScript基础入门之JSX(二)

转发 TypeScript基础入门之JSX(二) 属性类型检查 键入检查属性的第一步是确定元素属性类型。 内在元素和基于价值的元素之间略有不同。 对于内部元素,它是JSX.IntrinsicElements上的属性类型...

durban
昨天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部