PHP面向对象之领域模型+数据映射器实例(分析)
这里要说明一下 因为本人比较懒 博客中相关文章的内容更多的是对<深入PHP面向对象、模式与实践>一书中代码的整理和简单注解方便自己日后复习和参考, 对相关内容感兴趣的初学的朋友建议请先阅读原文。此处的内容只能当成一种学习的补充和参考。谢谢! 因原书中领域模型+数据映射器的示例代码是连贯在一起的 所以这里就整理在一起了。 简单介绍一下我的看法,从数据库操作的角度看领域模型主要是操作数据表中的单条记录的而数据映射器是操作整个数据表的数据的。 按原文的解释数据映射器是一个负责将数据库数据映射到对象的类,而领域模型象征着真实世界里项目中的各个参与者,它在数据中通常表现为一条记录。 废话不多说,代码和注解如下:与领域模型相关的三个数据表结构分别为venue(场所)、space(空间)、event(事件)。 abstract class DomainObject{ //抽象基类private $id; function __construct ($id=null){ function getId(){ //原书没有具体实现,应该是用于获取对象的从属对象的,比如venue(场所)相关的space(空间)对象 function collection(){ } class Venue extends DomainObject { function construct ($id = null,$name=null){ function setSpaces(SpaceCollection $spaces){ function addSpace(Space $space){ function setName($name_s){ function getName(){ //数据映射器(正如原文的解释数据映射器是一个负责将数据库数据映射到对象的类) abstract class Mapper{ //抽象基类 function createObject($array){ //将数组创建为上述领域模型中的对象 function find($id){ //通过ID从数据库中获取一条数据并创建为对象 function insert(\woo\domain\DomainObject $obj){ //将对象数据插入数据库 //需要在子类中实现的各抽象方法 //这里只建立一个VenueMapper类用于理解 protected function getCollection(array $raw){ //将Space数组转换成对象 protected function doCreateObject (array $array){ //创建对象 protected function doInsert(\woo\domain\DomainObject $object){ //将对象插入数据库 function update(\woo\domain\DomainObject $object){ //修改数据库数据 function selectStmt(){ //返回一个sql语句对象 } Iterator接口定义的方法:rewind() 指向列表开头 current() 返回当前指针处的元素 key() 返回当前的键(比如,指针的指) next() valid() 【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。 |
-
我想做的就是从此函数获取名字的结果,但是感觉太多的...[详细]
-
如何使用CASE WHEN在MySQL和PDO中运行更新查询. 以下...[详细]
-
我正在尝试使用hadoop和hive创建一个docker容器.这是...[详细]
-
本篇章节讲解PHP实现的简单在线计算器功能。供大家参...[详细]
-
我有一个2列的表farmer_crops,用于存储农民与其种植的...[详细]
-
我最近开始研究MySQL,虽然我已经阅读了一些有关数据库...[详细]
-
在我的MS SQL 2008 R2数据库中,我有这个表: TABLE [H...[详细]
-
我从这里生成一个视图: create or replace view date...[详细]
-
sql – LEFT JOIN(OUTER JOIN)与INNER JOIN的条件
SELECT A.COL1,B.COL1,C.COL1FROM TABLEA ALEFT JOIN ...[详细]
-
本篇章节讲解CI框架(CodeIgniter)公共模型类定义与用...[详细]