首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Zend 2模型体系结构

Zend 2模型体系结构
EN

Stack Overflow用户
提问于 2012-10-14 06:16:44
回答 1查看 6.6K关注 0票数 3

为了澄清我的疑虑,我有这样的设想:

我有一个销售汽车和房屋的应用程序(只是一个例子!),所以我创建了一个模块来显示所有的汽车,名为 cars ,还有一个用于显示所有房屋的模块,名为 houses

我有一个管理器模块,应该有一个CRUD系统的汽车和房屋。

我应该把我的汽车和房子的模型放在哪里?我应该创建一个模块来放置我的模型,比如一个Main模块?或者我应该把我的模型放在、Cars、 them 模块中,并在Manager模块中访问它们。

假设我使用select、insert和delete方法创建CarModel。如果我把这个模型放在Cars模块中,我可能会遇到安全问题,因为Cars现在可以访问插入和删除方法.

另一方面,我可以只使用select方法在Cars模块中创建一个Cars,然后在Manager模块中再次创建一个带有插入和删除的CarModel,但是这将使代码的维护变得非常困难。

解决这个问题最好的办法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-15 06:43:20

因此,要想在高层次上回答你的问题,有两种方法可以在你给出的上下文中分解你的模块:

  • 全合一模块(将admin/CRUD与实际模块结合起来,提供实体和前端内容)。我的一个开发人员对这个模块采用了这种方法:https://github.com/speckcommerce/SpeckCatalog
  • 单独的模块。例如,ZfcUser没有提供用户管理,但是ZfcUserAdmin使用了ZfcUser中的实体/映射器,并提供了额外的用户管理/管理功能。

这两种方法都是错误的或正确的。这实际上取决于您的偏好和您想要如何分解您的应用程序的功能。例如,如果没有管理/ CRUD系统,你会想要建立一个使用房屋或汽车模块的网站吗?

在更技术性的层面上,有几种方法可以使用Zend\Db处理“模型”或“实体”。两个常见的模式是TableGateway模式和数据映射器模式。

  • 表网关:--我在博客上写过这篇文章:http://blog.evan.pro/zf2-tablegateway-hydration
  • Data Mapper: --这是我最喜欢的解决方案。我还没有在博客上写过这篇文章,但是您可以在ZfcUser中找到一个用法示例。此外,基本数据映射器并不像Table那样内置到ZF2中,但它是一个更加灵活的解决方案。查看由AbstractDbMapper提供的ZfcBase

我将借此机会取笑ZF2教程中的几张幻灯片,这些幻灯片是罗伯·艾伦和我在PHPNW12提供的,也将是几周后在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

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12879787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档