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,我们将及时予以处理。 |
-
插入语句中C#应用程序中的MySql ODBC 5.1驱动程序的内存分配错误
我在C#中有一个.NET Wndows应用程序.这是一个使用MySq...[详细]
-
如何将ON DUPLICATE UPDATE与多值INSERT一起使用? IN...[详细]
-
我在Postgres中有一个多对多的连接表,我想索引到A)提...[详细]
-
sql-server – 如何在SQL Server数据库中设计用户/角色架构?
我想设计一个用户/角色系统: 用户具有名称和密码,然...[详细]
-
这是我的问题.例如,我有一个表包含一个字段的产品,名...[详细]
-
如下所示,我正在检查当前用户是否在table friend的use...[详细]
-
php – 不了解mysql语句DATE_ADD(NOW()INTERVAL)
我正在一个包含以下mysql行的页面上.总体目标只是将当...[详细]
-
我正在运行一个 python脚本,将大量数据插入到Postgres...[详细]
-
MySQL LIMIT / OFFSET:获取除第一个X之外的所有记录
我想查询50号及以上的所有记录.因此,我不想做LIMIT 49...[详细]
-
简单的网站访问量计数器实现,具体如下 首先说明 思路...[详细]