SlideShare a Scribd company logo

章节
• 背景
• 主流ORM
• PHPActiveRecord
• 实战应用
• 单元测试
• 总结

背景
• 关系对象模型(ORM)
• 简单(隐藏数据访问细节,没有SQL)
• 传达性(数据库结构被任何人都能理解的语言文档化)
• 精确性(基于数据模型创建正确标准化了的结构)

主流ORM介绍
• [Propel] (http://propelorm.org/)
• [Doctrine] (http://www.doctrine-project.org/)
• [ActiveRecord] (http://www.phpactiverecord.org/)
• [Eloquent] (https://github.com/illuminate/database)
• [Hibernate] (http://hibernate.org/)

PHPActiveRecord介绍
ORM 传统
数据层独立
业务层独立
SQL拼接
对象与关系
语义化
无SQL

PHPActiveRecord介绍
Config CRUD
FinderCallback

实战应用
业务模
型
需求分
析
数据库
设计

需求分析
成绩管理
成绩基本信息 成绩明细
试卷管理
试卷基本信息 试卷题目
试题管理
试题分类 试题基本信息

数据库设计

业务模型
对象
试题
题项
试卷
成绩
关系
试卷(m:n)试题
试题(1:m)题项
试题(m:1)题类
试卷(1:m)成绩
模型
试题:CRUD
试卷:发布
试卷:开考
试卷:交卷
试卷:批阅
成绩:查阅

单元测试
数据准备 代码编写
CRUD 业务功能

总结
• ORM VS 开发效率
• ORM VS 编码成本
• 复杂SQL
• 性能报告
Phpar模型实践

More Related Content

What's hot

Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Java SE 8 技術手冊第 11 章 - 執行緒與並行APIJava SE 8 技術手冊第 11 章 - 執行緒與並行API
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Justin Lin
 
10. 資料永續與交換
10. 資料永續與交換10. 資料永續與交換
10. 資料永續與交換
Justin Lin
 
9. meta-programming
9. meta-programming9. meta-programming
9. meta-programming
Justin Lin
 
資料永續與交換
資料永續與交換資料永續與交換
資料永續與交換
Justin Lin
 
CH11:執行緒與並行API
CH11:執行緒與並行APICH11:執行緒與並行API
CH11:執行緒與並行API
Justin Lin
 
设计高性能mysql应用-TechClub技术沙龙
设计高性能mysql应用-TechClub技术沙龙设计高性能mysql应用-TechClub技术沙龙
设计高性能mysql应用-TechClub技术沙龙banping
 
物件封裝
物件封裝物件封裝
物件封裝
Justin Lin
 
資料永續與交換
資料永續與交換資料永續與交換
資料永續與交換
Justin Lin
 
Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 8 技術手冊第 5 章 - 物件封裝Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 8 技術手冊第 5 章 - 物件封裝
Justin Lin
 
CH17:反射與類別載入器
CH17:反射與類別載入器CH17:反射與類別載入器
CH17:反射與類別載入器
Justin Lin
 
CH04:認識物件
CH04:認識物件CH04:認識物件
CH04:認識物件
Justin Lin
 
Ch07 使用 JSTL
Ch07 使用 JSTLCh07 使用 JSTL
Ch07 使用 JSTL
Justin Lin
 
Java SE 8 技術手冊第 2 章 - 從JDK到IDE
Java SE 8 技術手冊第 2 章 - 從JDK到IDEJava SE 8 技術手冊第 2 章 - 從JDK到IDE
Java SE 8 技術手冊第 2 章 - 從JDK到IDE
Justin Lin
 
2. 型態、變數與運算子
2. 型態、變數與運算子2. 型態、變數與運算子
2. 型態、變數與運算子
Justin Lin
 
5. 從模組到類別
5. 從模組到類別5. 從模組到類別
5. 從模組到類別
Justin Lin
 
CH09:Collection與Map
CH09:Collection與MapCH09:Collection與Map
CH09:Collection與Map
Justin Lin
 
Ch07 使用JSTL
Ch07 使用JSTL Ch07 使用JSTL
Ch07 使用JSTL
Justin Lin
 
20120324 sql server 2012新特性by_rico
20120324 sql server 2012新特性by_rico20120324 sql server 2012新特性by_rico
20120324 sql server 2012新特性by_ricoRico Chen
 
反射與類別載入器
反射與類別載入器反射與類別載入器
反射與類別載入器
Justin Lin
 
Ch08 自訂標籤
Ch08 自訂標籤Ch08 自訂標籤
Ch08 自訂標籤
Justin Lin
 

What's hot (20)

Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Java SE 8 技術手冊第 11 章 - 執行緒與並行APIJava SE 8 技術手冊第 11 章 - 執行緒與並行API
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
 
10. 資料永續與交換
10. 資料永續與交換10. 資料永續與交換
10. 資料永續與交換
 
9. meta-programming
9. meta-programming9. meta-programming
9. meta-programming
 
資料永續與交換
資料永續與交換資料永續與交換
資料永續與交換
 
CH11:執行緒與並行API
CH11:執行緒與並行APICH11:執行緒與並行API
CH11:執行緒與並行API
 
设计高性能mysql应用-TechClub技术沙龙
设计高性能mysql应用-TechClub技术沙龙设计高性能mysql应用-TechClub技术沙龙
设计高性能mysql应用-TechClub技术沙龙
 
物件封裝
物件封裝物件封裝
物件封裝
 
資料永續與交換
資料永續與交換資料永續與交換
資料永續與交換
 
Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 8 技術手冊第 5 章 - 物件封裝Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 8 技術手冊第 5 章 - 物件封裝
 
CH17:反射與類別載入器
CH17:反射與類別載入器CH17:反射與類別載入器
CH17:反射與類別載入器
 
CH04:認識物件
CH04:認識物件CH04:認識物件
CH04:認識物件
 
Ch07 使用 JSTL
Ch07 使用 JSTLCh07 使用 JSTL
Ch07 使用 JSTL
 
Java SE 8 技術手冊第 2 章 - 從JDK到IDE
Java SE 8 技術手冊第 2 章 - 從JDK到IDEJava SE 8 技術手冊第 2 章 - 從JDK到IDE
Java SE 8 技術手冊第 2 章 - 從JDK到IDE
 
2. 型態、變數與運算子
2. 型態、變數與運算子2. 型態、變數與運算子
2. 型態、變數與運算子
 
5. 從模組到類別
5. 從模組到類別5. 從模組到類別
5. 從模組到類別
 
CH09:Collection與Map
CH09:Collection與MapCH09:Collection與Map
CH09:Collection與Map
 
Ch07 使用JSTL
Ch07 使用JSTL Ch07 使用JSTL
Ch07 使用JSTL
 
20120324 sql server 2012新特性by_rico
20120324 sql server 2012新特性by_rico20120324 sql server 2012新特性by_rico
20120324 sql server 2012新特性by_rico
 
反射與類別載入器
反射與類別載入器反射與類別載入器
反射與類別載入器
 
Ch08 自訂標籤
Ch08 自訂標籤Ch08 自訂標籤
Ch08 自訂標籤
 

Editor's Notes

  1. 在关系型数据库和业务实体对象之间的一个映射
  2. http://www.phpactiverecord.org/
  3. ###功能清单 >- 试题管理 >> 试题分类 >> 试题本体信息(基本描述,题型,分值) >> 试题项 >- 试卷管理 >> 试卷本体信息(基本描述,发布状态,考试时长,分值,打乱排序,考生对象) >> 试卷题目项 >- 成绩管理 >> 成绩基础信息(考生,得分,状态) >> 成绩详细信息(题目,选项,得分)
  4. 实体基础属性(对象) 实体关联关系(关系) 实体业务功能(模型)
  5. PHPUnit的准备
  6. 开发效率 CRUD代码基本不用写,多表查询,Where语句 编码成本 代码易读易用易测试 需要抽象 关系,对象,模型