vin*_*a87 3 php zend-framework2
为了使我的疑问清楚,我有这样的场景:
我有一个销售汽车和房屋的应用程序(只是一个例子!),所以我创建了一个模块来显示所有汽车,称为汽车,还有一个显示所有房屋,称为房屋.
我有一个Manager模块,应该有一个汽车和房屋的CRUD系统.
我应该把我的模型放在哪里用于汽车和房屋?我应该创建一个模块来放置我的模型,就像Main模块一样?或者我应该将我的模型放在汽车和房屋模块中并在Manager模块中访问它们?
假设我CarModel使用方法select,insert和delete创建了一个.如果我把这个模型放在Cars模块中我会遇到安全问题,因为Cars现在可以访问插入和删除方法了...
另一方面,我可以使用select方法创建一个CarModel内部Cars模块,然后在模块中再次创建一个带插入和删除的模块,但这将很难维护代码...CarModelManager
解决这个问题的最佳方法是什么?
Eva*_*Pro 15
因此,要在高层次上回答您的问题,您可以通过两种方式在您给出的上下文中分解模块:
这两种方法都不对或错.这实际上取决于您的偏好以及您希望如何分解应用程序的功能.例如,您是否想要在没有管理/ CRUD系统的情况下构建一个可以使用Houses或Car模块的站点?
在更技术层面上,有几种方法可以使用Zend\Db处理"模型"或"实体".两种常见的模式是TableGateway模式和Data Mapper模式.
表网关:我在博客上写过这篇文章:http://blog.evan.pro/zf2-tablegateway-hydration
Data Mapper:这是我的首选解决方案.我还没有关于这个的博客,但你可以在ZfcUser中找到一个用法示例.此外,基础数据映射器不像Table Gatway那样内置于ZF2中,但它是一种更灵活的解决方案.退房AbstractDbMapper提供ZfcBase.
我将借此机会挑逗Rob Allen和我在PHPNW12上提供的ZF2教程中的几张幻灯片,并将在几周后再次在ZendCon上给出:
表网关http://evan.pro/caps/2ddbaf.png 表网关选择http://evan.pro/caps/0904b8.png AbstractDbMapper http://evan.pro/caps/a31480.png 映射器选择http:/ /evan.pro/caps/a2a04f.png 摘要http://evan.pro/caps/3ec9e6.png
| 归档时间: |
|
| 查看次数: |
6588 次 |
| 最近记录: |