学习 CodeIgniter

56
学学 CodeIgniter ID & Email:[email protected] rg.cn 2012.07.14 学学学学http://codeigniter.org.cn/forums/thread-13719-1-1.html

Transcript of 学习 CodeIgniter

Page 1: 学习 CodeIgniter

学习 CodeIgniterID & Email:[email protected]

2012.07.14

配套文稿: http://codeigniter.org.cn/forums/thread-13719-1-1.html

Page 2: 学习 CodeIgniter

Page 2

关于 CodeIgniter

一个叫 Ellis 的前摇滚乐手写的框架

CodeIgniter 中国社区

Page 3: 学习 CodeIgniter

Page 3

学习 CodeIgniter

CodeIgniter 中国社区

“ 不会 PHP 可以先学 CI 找份工作之后再找机会学习 PHP”

这是对 CI 的赞扬,但不是程序员该有的心态。

Page 4: 学习 CodeIgniter

Page 4

学习 CodeIgniter

How?How can I?How does it?

CodeIgniter 中国社区

Page 5: 学习 CodeIgniter

Page 5

How does it

造轮子说学习造轮子要去学习多大的轮子?

CodeIgniter 中国社区

Page 6: 学习 CodeIgniter

Page 6

CodeIgniter 的特性免费快速轻量功能强大

CodeIgniter 中国社区

Page 7: 学习 CodeIgniter

Page 7

CodeIgniter 的特性文档丰富社区活跃

CodeIgniter 中国社区

Page 8: 学习 CodeIgniter

Page 8

CodeIgniter 的技术特性架构特性程序的开发思想

CodeIgniter 中国社区

Page 9: 学习 CodeIgniter

Page 9

架构特性MVC超级对象按需加载自身可扩展

CodeIgniter 中国社区

Page 10: 学习 CodeIgniter

Page 10

架构特性 - MVC

CI 之根本MVC 是理念约束MVC 是基础架构

CodeIgniter 中国社区

Page 11: 学习 CodeIgniter

Page 11

架构特性 - 超级对象业务逻辑空间大部分都是在超级对象之下

CodeIgniter 中国社区

Page 12: 学习 CodeIgniter

Page 12

架构特性 - 超级对象业务逻辑空间大部分都是在超级对象之下

– 除了 Hooks

CodeIgniter 中国社区

Page 13: 学习 CodeIgniter

Page 13

架构特性 - 超级对象业务逻辑空间大部分都是在超级对象之下

– 除了 Hooks

无处不在

CodeIgniter 中国社区

Page 14: 学习 CodeIgniter

Page 14

架构特性 - 超级对象业务逻辑空间大部分都是在超级对象之下

– 除了 Hooks

无处不在– Controller

CodeIgniter 中国社区

Page 15: 学习 CodeIgniter

Page 15

架构特性 - 超级对象业务逻辑空间大部分都是在超级对象之下

– 除了 Hooks

无处不在– Controller

– Model

CodeIgniter 中国社区

Page 16: 学习 CodeIgniter

Page 16

架构特性 - 超级对象业务逻辑空间大部分都是在超级对象之下

– 除了 Hooks

无处不在– Controller

– Model

• $CI =& get_instance(); return $CI->$key;

CodeIgniter 中国社区

Page 17: 学习 CodeIgniter

Page 17

架构特性 - 超级对象业务逻辑空间大部分都是在超级对象之下

– 除了 Hooks

无处不在– Controller

– Model

• $CI =& get_instance(); return $CI->$key;

– View

CodeIgniter 中国社区

Page 18: 学习 CodeIgniter

Page 18

架构特性 - 按需加载Load 是一个理念

CodeIgniter 中国社区

Page 19: 学习 CodeIgniter

Page 19

架构特性 - 按需加载Load 是一个理念Load 是一个系统

CodeIgniter 中国社区

Page 20: 学习 CodeIgniter

Page 20

架构特性 - 按需加载Load 是一个理念Load 是一个系统

– core/Loader.php

CodeIgniter 中国社区

Page 21: 学习 CodeIgniter

Page 21

架构特性 - 按需加载Load 是一个理念Load 是一个系统

– core/Loader.php

• 30K , 1248 行

CodeIgniter 中国社区

Page 22: 学习 CodeIgniter

Page 22

架构特性 - 按需加载Load 是一个理念Load 是一个系统

– core/Loader.php

• 30K , 1248 行– load_class() 、 config_get() 、 Lang 、 Config

CodeIgniter 中国社区

Page 23: 学习 CodeIgniter

Page 23

架构特性 - 按需加载Load 是一个理念Load 是一个系统

– core/Loader.php

• 30K , 1248 行– load_class() 、 config_get() 、 Lang 、 Config

按需加载,资源复用

CodeIgniter 中国社区

Page 24: 学习 CodeIgniter

Page 24

架构特性 - 按需加载Load 是一个理念Load 是一个系统

– core/Loader.php

• 30K , 1248 行– load_class() 、 config_get() 、 Lang 、 Config

按需加载,资源复用– 按需

CodeIgniter 中国社区

Page 25: 学习 CodeIgniter

Page 25

架构特性 - 按需加载Load 是一个理念Load 是一个系统

– core/Loader.php

• 30K , 1248 行– load_class() 、 config_get() 、 Lang 、 Config

按需加载,资源复用– 按需– 复用

CodeIgniter 中国社区

Page 26: 学习 CodeIgniter

Page 26

架构特性 - 按需加载Load 是一个理念Load 是一个系统

– core/Loader.php

• 30K , 1248 行– load_class() 、 config_get() 、 Lang 、 Config

按需加载,资源复用– 按需– 复用– 纠结

CodeIgniter 中国社区

Page 27: 学习 CodeIgniter

Page 27

架构特性 - 自身可扩展 load 系统的支持Hooks 机制的支持

CodeIgniter 中国社区

Page 28: 学习 CodeIgniter

Page 28

架构特性 - 自身可扩展 load 系统的支持Hooks 机制的支持

– 功能原型

CodeIgniter 中国社区

Page 29: 学习 CodeIgniter

Page 29

架构特性 - 自身可扩展 Hooks 机制的功能原型

CodeIgniter 中国社区

Page 30: 学习 CodeIgniter

Page 30

架构特性 - 自身可扩展 load 系统的支持Hooks 机制的支持

– 功能原型– 挂载点的名字

CodeIgniter 中国社区

Page 31: 学习 CodeIgniter

Page 31

架构特性 - 自身可扩展 load 系统的支持Hooks 机制的支持

– 功能原型– 挂载点的名字

目录结构设计

CodeIgniter 中国社区

Page 32: 学习 CodeIgniter

Page 32

架构特性 - 自身可扩展 load 系统的支持Hooks 机制的支持

– 功能原型– 挂载点的名字

目录结构设计– system 和 application 的子目录结构有很多是相同的

CodeIgniter 中国社区

Page 33: 学习 CodeIgniter

Page 33

架构特性 - 自身可扩展 load 系统的支持Hooks 机制的支持

– 功能原型– 挂载点的名字

目录结构设计– system 和 application 的子目录结构有很多是相同的– 便于文件管理

CodeIgniter 中国社区

Page 34: 学习 CodeIgniter

Page 34

架构特性 - 自身可扩展 load 系统的支持Hooks 机制的支持

– 功能原型– 挂载点的名字

目录结构设计– system 和 application 的子目录结构有很多是相同的– 便于文件管理– 便于 load 的实现

CodeIgniter 中国社区

Page 35: 学习 CodeIgniter

Page 35

优雅的 CodeIginiter

超级对象按需加载自身可扩展

CodeIgniter 中国社区

Page 36: 学习 CodeIgniter

Page 36

程序开发思想安全

CodeIgniter 中国社区

Page 37: 学习 CodeIgniter

Page 37

程序开发思想安全

– Security, Input

CodeIgniter 中国社区

Page 38: 学习 CodeIgniter

Page 38

程序开发思想安全

– Security, Input

– 安装指导

CodeIgniter 中国社区

Page 39: 学习 CodeIgniter

Page 39

程序开发思想安全

– Security, Input

– 安装指导性能

CodeIgniter 中国社区

Page 40: 学习 CodeIgniter

Page 40

程序开发思想安全

– Security, Input

– 安装指导性能

– 模板引擎

CodeIgniter 中国社区

Page 41: 学习 CodeIgniter

Page 41

PHP 本身就是一个模板语言

CodeIgniter 中国社区

1994 年的 PHP [ 摘自 Rasmus Lerdorf 的 PPT]

Page 42: 学习 CodeIgniter

Page 42

PHP 本身就是一个模板语言

CodeIgniter 中国社区

1995 年的 PHP [ 摘自 Rasmus Lerdorf 的 PPT]

Page 43: 学习 CodeIgniter

Page 43

程序开发思想安全

– Security, Input

– 安装指导性能

– 模板引擎 include

CodeIgniter 中国社区

Page 44: 学习 CodeIgniter

Page 44

程序开发思想安全

– Security, Input

– 安装指导性能

– 模板引擎 includeeval

CodeIgniter 中国社区

Page 45: 学习 CodeIgniter

Page 45

程序开发思想安全

– Security, Input

– 安装指导性能

– 模板引擎 includeeval

<?= 变成 <?php echo

CodeIgniter 中国社区

Page 46: 学习 CodeIgniter

Page 46

程序开发思想安全

– Security, Input

– 安装指导性能

– 模板引擎 includeeval

<?= 变成 <?php echo

1.PHP 没有开启短标签

CodeIgniter 中国社区

Page 47: 学习 CodeIgniter

Page 47

程序开发思想安全

– Security, Input

– 安装指导性能

– 模板引擎 includeeval

<?= 变成 <?php echo

1.PHP 没有开启短标签2. 设置了 CI 的 rewrite_short_tags 为 true

CodeIgniter 中国社区

Page 48: 学习 CodeIgniter

Page 48

程序开发思想安全

– Security, Input

– 安装指导性能

– 模板引擎– Benchmark

CodeIgniter 中国社区

Page 49: 学习 CodeIgniter

Page 49

程序开发思想安全

– Security, Input

– 安装指导性能

– 模板引擎– Benchmark

多环境支持

CodeIgniter 中国社区

Page 50: 学习 CodeIgniter

Page 50

程序开发思想安全

– Security, Input

– 安装指导性能

– 模板引擎– Benchmark

多环境支持用户体验

CodeIgniter 中国社区

Page 51: 学习 CodeIgniter

Page 51

程序开发思想安全

– Security, Input

– 安装指导性能

– 模板引擎– Benchmark

多环境支持用户体验

– 伪静态

CodeIgniter 中国社区

Page 52: 学习 CodeIgniter

Page 52

CodeIgniter 的生命周期 index.phpsystem/core/CodeIgniter.php

CodeIgniter 中国社区

Page 53: 学习 CodeIgniter

Page 53

CodeIgniter 的生命周期 - index.php

各种配置、参数定义 include("core/CodeIgniter.php")

CodeIgniter 中国社区

Page 54: 学习 CodeIgniter

Page 54

CI 的生命周期 - system/core/CodeIgniter.php

include('core/commons.php')载入 config/constants.php其他配置 load benchmark, hookshook: pre_system load Config 、 Utf8 、 URI 、 Router 、 Outputhook: cache_override

– output::_display_cache()

CodeIgniter 中国社区

Page 55: 学习 CodeIgniter

Page 55

CI 的生命周期 - system/core/CodeIgniter.php

load Security 、 Input 、 Langhook: pre_controller$CI = new $class();hook: post_controller_constructorhook: post_controllerhook: display_override

– Output::_display()

hook: post_system清理数据库连接

CodeIgniter 中国社区

Page 56: 学习 CodeIgniter

谢 谢!CodeIgniter 中国社区