php对象映射,php – 了解Domain对象数据映射器模式?

这背后的想法是有一个标准对象,它表示现实生活中或者换句话说,在域中的当前状态。这个域模型通常是没有逻辑的数据集合。

class person_DO {

public $id;

public $firstname;

public $lastname;

public $addresses;

}

该域模型(域对象)的实例和持久性的加载通过数据映射器(例如数据映射器)来处理。上述人的地址可能通过1:n关系位于另一个表中,因此:

TABLE person {

id INTEGER PRIMARY KEY,

firstname VARCHAR(32),

lastname VARCHAR(32)

}

TABLE addresses {

id INTEGER PRIMARY KEY,

person_id INTEGER FOREIGN KEY ON person.id, --Reference on person-row

street VARCHAR(64),

...

}

person_DO不需要知道这一点,但是数据映射器,因为它必须在加载期间聚合数据,并在持久化期间分离:

class person_DM {

/**

* @param [integer] $id

* @return [person_DO] an instance of a person or null, if no person

* with that id was found.

*/

public function findById ($id) {...}

/**

* @return [array of person_DO]

*/

public function fetchAll() {...}

/**

* persists a person object

* @param [person_DO] an instance of a person

*/

public function saveOrUpdate(person_DO $person) {...}

}

为了更加分离不同的部分,DataMappers通常使用DbTable Gateway或类似的模式来允许使用不同的数据库或类似的动作。这样,我可以有几个数据库具有相同的模式,但例如。在不同的组织中构建一个具有相同代码的数据仓库,只有不同的数据库对象。

作为一个实际的例子,我建议看看Zend框架的Quickstart Tutorial,这正是我刚才解释的简单。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值