稍微理解ORM

她是你姑姑,又是你师父,怎么能做你妻子!

概念

ORM即Object/Relation Mapping的简写,一般称作“对象关系映射”,在Web开发中最常出没于和关系型数据库交互的地方。ORM以最基本的形式建模数据。比如ORM会将MySQL的一张表映射成一个PHP类(模型),表的字段就是这个类的成员变量

举例

在OOP中通常我们需要写一个对应的class User来作为user数据表的数据模型:

1
2
3
4
5
6
7
8
9
10
11
12
13
// 声明class User
class User{
$id;
$name;

function create(){/*...*/}
function load($id){/*...*/}
}

// 使用class User
$user = new User();
$user->name = 'fancy';
$user->create();

但是通过ORM,我们可以不用去声明class User,可以直接继承ORM提供的工厂类,比如:

1
2
3
4
// 直接使用!对于熟悉MVC的亲知道这个意义之所在!
$user = new ORM('user'); // ORM都有自己的规则,这里直接使用了MySQL的表名
$user->name = 'fancy'; // MySQL的表的字段就是$user对象的成员变量
$user->save(); // 掉用ORM提供的接口函数

缺点

在某些复杂的sql中有性能问题