Php Zend Framework 2上的模块和模型组织

Php Zend Framework 2上的模块和模型组织,php,zend-framework,zend-framework2,zend-framework-modules,Php,Zend Framework,Zend Framework2,Zend Framework Modules,我对ZF模块和模型的结构有一些疑问 (我说的是ZF 2,因为我放弃了ZF 1.11) 为了使我的问题简单易懂,请看以下示例: (我创建这个只是为了学习ZF2) 这是一个“电影管理器应用程序”。 在此应用程序中,我有3种用户: - visitors: peolple who olny can see the movies in the database. - members: same as visitors plus insert, update and delete movies. - ad

我对ZF模块和模型的结构有一些疑问

(我说的是ZF 2,因为我放弃了ZF 1.11)

为了使我的问题简单易懂,请看以下示例: (我创建这个只是为了学习ZF2)

这是一个“电影管理器应用程序”。 在此应用程序中,我有3种用户:

- visitors: peolple who olny can see the movies in the database.
- members: same as visitors plus insert, update and delete movies.
- administrator: same as members plus insert, update and delete users and other informations as genre, artist, ...
会员们只能插入一部新电影。e、 ,他们不能 插入新的流派,也不是新的艺术家

好的。。。对于此问题,我找到了以下解决方案:

- create 3 modules: visitor, member, admin;
但我不确定这是否是组织项目的最佳方式

我意识到ZF希望人们以这种方式组织应用程序:

- create modules for each funcionallity;
- create roles for each kind of user;
因此,我的问题是:

1. My solution is right or wrong?
2. If my solution is right, how can I organize my application?
3. How can I organize my models, to be visible to more than one module?
- I think a should create a model "movie" somewhere if "inserts, updates, deletes, and selects"
then a module "visitor" could only use a "select" while a module "member" could use all the funcionallities. Am I right?

4. If my solution is not right, how can I organize my application?
5. How should be my modules?
我真的受不了这个问题。 A在任何地方都找不到答案。。。 如果有人有一个像这样的小应用程序,你不介意分享,我会很高兴

如果我的问题不清楚,请提问


谢谢您的帮助。

这里看到的是一个数据库模型,因此我的主要问题是如何管理数据。在MVC模式中,您可以使用模型管理数据。据我所知,您的问题不应与ZF2相关或仅限于ZF2。与早期版本一样,您应该有模型来管理数据库和数据表

这些模块将处理应用程序方面的问题。当您拥有数据(人物、流派、用户、电影)的实体模型时,您可以创建数十个访问模型的模块。因此,您可以有很多不同用途的模块,但总是相同的模型


您可以有一个只处理用户管理的模块,一个只管理(添加/更新)电影,另一个只列出(读取)电影,等等。

我认为您可以在一个ZF2模块中完成大部分工作,可能称为“MovieManager”。Movie和Person可以是MovieManager模块命名空间中的模型(即基类和数据库表)

用户可以是单独的模块,用于处理用户身份验证和访问控制。您可以看看Evan Coury在可重用的ZF2用户模块上所做的工作:或者您可以保持简单,并将用户模型也放在您的MovieManager模块中

我将使用Zend_Acl定义允许给定用户执行的操作。或者,您可以更简单地通过在用户类中具有基本的“角色”属性并在MovieManager控制器中检查授权角色来实现这一点