ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

php-Zend框架中的建模

2019-11-02 11:29:41  阅读:276  来源: 互联网

标签:zend-db zend-db-table modeling zend-framework php


我目前正在从事一个大型项目,只是想知道哪种最佳实践是分别或在一个类中对实体和实体集建模?

当前,我为每个实体实现两个类(例如,一个“作者”和“作者”类),其中复数类包含诸如“访存作者”之类的方法(对于复数使用Zend_Db_Table_Abstract,对于单数使用Zend_Db_Table_Row_Abstract).

但是我意识到,我经常在单个实体的对象中看到诸如“获取/列出”功能之类的方法,就我不必拥有那么多文件这一事实而言,这似乎很整洁.

我知道数据建模没有严格的规则,但是在我继续做得太远之前,我会对了解关于最佳实践的普遍共识是什么感兴趣(当然还有支持的论点!).

答案[意见]感激不尽!

罗布·甘利

解决方法:

就个人而言,我更喜欢一个名为Person的模型来实际代表一个人,而更喜欢PersonCollection之类的模型来代表一个人的集合.在任何情况下,我都不会有用于在这些对象上获取/获取的方法.相反,我会将这些方法放在PersonRepository或PersonMapper类上.

对于ActiveRecord作为建模模式,这确实是我最大的不适.通过使用诸如find()和save()之类的方法,它为诸如getPersonByName(),getPersonsWithMinimumAge()等方法打开了大门.这些方法很好,它们没有错,但是我认为从语义上讲,它们在映射器或存储库类.让模型实际建模,将持久性和检索留给映射器和存储库.

因此,为了更直接地解决您的问题,我可能会看到每个“实体类型”三个类:

>人-实际为人建模
> PersonCollection-扩展了一些Abstract Collection类,Person类的每个项目
> PersonMapper-持久性和检索Person对象和PersonCollections

控制器将使用映射器来持久化并检索模型和集合.

我被《 Doctrine2》吸引了,这并不奇怪.那里的EntityManager充当持久性和检索的单个联系点.然后,我可以创建将EntityManager用于自定义功能的存储库和服务.然后,我可以在动作助手,工厂或依赖项注入容器上分层放置,以轻松获取/创建这些存储库和服务.

但是我知道标准的ActiveRecord方法非常普遍,易于理解并且非常主流.使用它可以获得良好的结果,并且可以找到许多立即理解它并可以很好地使用它的开发人员.

与大多数情况一样,YMMV.

标签:zend-db,zend-db-table,modeling,zend-framework,php
来源: https://codeday.me/bug/20191102/1991206.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有