学习 CodeIgniter
-
Upload
brucewolf -
Category
Technology
-
view
619 -
download
1
Transcript of 学习 CodeIgniter
学习 CodeIgniterID & Email:[email protected]
2012.07.14
配套文稿: http://codeigniter.org.cn/forums/thread-13719-1-1.html
Page 2
关于 CodeIgniter
一个叫 Ellis 的前摇滚乐手写的框架
CodeIgniter 中国社区
Page 3
学习 CodeIgniter
CodeIgniter 中国社区
“ 不会 PHP 可以先学 CI 找份工作之后再找机会学习 PHP”
这是对 CI 的赞扬,但不是程序员该有的心态。
Page 4
学习 CodeIgniter
How?How can I?How does it?
CodeIgniter 中国社区
Page 5
How does it
造轮子说学习造轮子要去学习多大的轮子?
CodeIgniter 中国社区
Page 6
CodeIgniter 的特性免费快速轻量功能强大
CodeIgniter 中国社区
Page 7
CodeIgniter 的特性文档丰富社区活跃
CodeIgniter 中国社区
Page 8
CodeIgniter 的技术特性架构特性程序的开发思想
CodeIgniter 中国社区
Page 9
架构特性MVC超级对象按需加载自身可扩展
CodeIgniter 中国社区
Page 10
架构特性 - MVC
CI 之根本MVC 是理念约束MVC 是基础架构
CodeIgniter 中国社区
Page 11
架构特性 - 超级对象业务逻辑空间大部分都是在超级对象之下
CodeIgniter 中国社区
Page 12
架构特性 - 超级对象业务逻辑空间大部分都是在超级对象之下
– 除了 Hooks
CodeIgniter 中国社区
Page 13
架构特性 - 超级对象业务逻辑空间大部分都是在超级对象之下
– 除了 Hooks
无处不在
CodeIgniter 中国社区
Page 14
架构特性 - 超级对象业务逻辑空间大部分都是在超级对象之下
– 除了 Hooks
无处不在– Controller
CodeIgniter 中国社区
Page 15
架构特性 - 超级对象业务逻辑空间大部分都是在超级对象之下
– 除了 Hooks
无处不在– Controller
– Model
CodeIgniter 中国社区
Page 16
架构特性 - 超级对象业务逻辑空间大部分都是在超级对象之下
– 除了 Hooks
无处不在– Controller
– Model
• $CI =& get_instance(); return $CI->$key;
CodeIgniter 中国社区
Page 17
架构特性 - 超级对象业务逻辑空间大部分都是在超级对象之下
– 除了 Hooks
无处不在– Controller
– Model
• $CI =& get_instance(); return $CI->$key;
– View
CodeIgniter 中国社区
Page 18
架构特性 - 按需加载Load 是一个理念
CodeIgniter 中国社区
Page 19
架构特性 - 按需加载Load 是一个理念Load 是一个系统
CodeIgniter 中国社区
Page 20
架构特性 - 按需加载Load 是一个理念Load 是一个系统
– core/Loader.php
CodeIgniter 中国社区
Page 21
架构特性 - 按需加载Load 是一个理念Load 是一个系统
– core/Loader.php
• 30K , 1248 行
CodeIgniter 中国社区
Page 22
架构特性 - 按需加载Load 是一个理念Load 是一个系统
– core/Loader.php
• 30K , 1248 行– load_class() 、 config_get() 、 Lang 、 Config
CodeIgniter 中国社区
Page 23
架构特性 - 按需加载Load 是一个理念Load 是一个系统
– core/Loader.php
• 30K , 1248 行– load_class() 、 config_get() 、 Lang 、 Config
按需加载,资源复用
CodeIgniter 中国社区
Page 24
架构特性 - 按需加载Load 是一个理念Load 是一个系统
– core/Loader.php
• 30K , 1248 行– load_class() 、 config_get() 、 Lang 、 Config
按需加载,资源复用– 按需
CodeIgniter 中国社区
Page 25
架构特性 - 按需加载Load 是一个理念Load 是一个系统
– core/Loader.php
• 30K , 1248 行– load_class() 、 config_get() 、 Lang 、 Config
按需加载,资源复用– 按需– 复用
CodeIgniter 中国社区
Page 26
架构特性 - 按需加载Load 是一个理念Load 是一个系统
– core/Loader.php
• 30K , 1248 行– load_class() 、 config_get() 、 Lang 、 Config
按需加载,资源复用– 按需– 复用– 纠结
CodeIgniter 中国社区
Page 27
架构特性 - 自身可扩展 load 系统的支持Hooks 机制的支持
CodeIgniter 中国社区
Page 28
架构特性 - 自身可扩展 load 系统的支持Hooks 机制的支持
– 功能原型
CodeIgniter 中国社区
Page 29
架构特性 - 自身可扩展 Hooks 机制的功能原型
CodeIgniter 中国社区
Page 30
架构特性 - 自身可扩展 load 系统的支持Hooks 机制的支持
– 功能原型– 挂载点的名字
CodeIgniter 中国社区
Page 31
架构特性 - 自身可扩展 load 系统的支持Hooks 机制的支持
– 功能原型– 挂载点的名字
目录结构设计
CodeIgniter 中国社区
Page 32
架构特性 - 自身可扩展 load 系统的支持Hooks 机制的支持
– 功能原型– 挂载点的名字
目录结构设计– system 和 application 的子目录结构有很多是相同的
CodeIgniter 中国社区
Page 33
架构特性 - 自身可扩展 load 系统的支持Hooks 机制的支持
– 功能原型– 挂载点的名字
目录结构设计– system 和 application 的子目录结构有很多是相同的– 便于文件管理
CodeIgniter 中国社区
Page 34
架构特性 - 自身可扩展 load 系统的支持Hooks 机制的支持
– 功能原型– 挂载点的名字
目录结构设计– system 和 application 的子目录结构有很多是相同的– 便于文件管理– 便于 load 的实现
CodeIgniter 中国社区
Page 35
优雅的 CodeIginiter
超级对象按需加载自身可扩展
CodeIgniter 中国社区
Page 36
程序开发思想安全
CodeIgniter 中国社区
Page 37
程序开发思想安全
– Security, Input
CodeIgniter 中国社区
Page 38
程序开发思想安全
– Security, Input
– 安装指导
CodeIgniter 中国社区
Page 39
程序开发思想安全
– Security, Input
– 安装指导性能
CodeIgniter 中国社区
Page 40
程序开发思想安全
– Security, Input
– 安装指导性能
– 模板引擎
CodeIgniter 中国社区
Page 41
PHP 本身就是一个模板语言
CodeIgniter 中国社区
1994 年的 PHP [ 摘自 Rasmus Lerdorf 的 PPT]
Page 42
PHP 本身就是一个模板语言
CodeIgniter 中国社区
1995 年的 PHP [ 摘自 Rasmus Lerdorf 的 PPT]
Page 43
程序开发思想安全
– Security, Input
– 安装指导性能
– 模板引擎 include
CodeIgniter 中国社区
Page 44
程序开发思想安全
– Security, Input
– 安装指导性能
– 模板引擎 includeeval
CodeIgniter 中国社区
Page 45
程序开发思想安全
– Security, Input
– 安装指导性能
– 模板引擎 includeeval
<?= 变成 <?php echo
CodeIgniter 中国社区
Page 46
程序开发思想安全
– Security, Input
– 安装指导性能
– 模板引擎 includeeval
<?= 变成 <?php echo
1.PHP 没有开启短标签
CodeIgniter 中国社区
Page 47
程序开发思想安全
– Security, Input
– 安装指导性能
– 模板引擎 includeeval
<?= 变成 <?php echo
1.PHP 没有开启短标签2. 设置了 CI 的 rewrite_short_tags 为 true
CodeIgniter 中国社区
Page 48
程序开发思想安全
– Security, Input
– 安装指导性能
– 模板引擎– Benchmark
CodeIgniter 中国社区
Page 49
程序开发思想安全
– Security, Input
– 安装指导性能
– 模板引擎– Benchmark
多环境支持
CodeIgniter 中国社区
Page 50
程序开发思想安全
– Security, Input
– 安装指导性能
– 模板引擎– Benchmark
多环境支持用户体验
CodeIgniter 中国社区
Page 51
程序开发思想安全
– Security, Input
– 安装指导性能
– 模板引擎– Benchmark
多环境支持用户体验
– 伪静态
CodeIgniter 中国社区
Page 52
CodeIgniter 的生命周期 index.phpsystem/core/CodeIgniter.php
CodeIgniter 中国社区
Page 53
CodeIgniter 的生命周期 - index.php
各种配置、参数定义 include("core/CodeIgniter.php")
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
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 中国社区
谢 谢!CodeIgniter 中国社区