我对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, ...
成员不能只插入新电影,i。例如,他们不能 插入新流派,既不是新艺术家。
好的...对于这个问题,我找到了这个解决方案:
- 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在任何地方找不到答案...... 如果某人有一个像这样的小应用程序,你不介意分享,我会很高兴。
如果我不清楚我的问题,请询问!
感谢您的帮助。
答案 0 :(得分:3)
这里看到的是数据库模型,因此我的主要问题是如何管理数据。在MVC模式中,您可以使用模型管理数据。我在这里可以告诉你的问题不应该与ZF2相关或仅限于ZF2。与早期版本一样,您应该拥有管理数据库和数据表的模型。
模块将处理应用程序方面。当您拥有可靠的数据模型(人物,流派,用户,电影)时,您可以创建数十个访问模型的模块。因此,您可以拥有许多用于不同目的的模块,但总是使用相同的模型。
您可以拥有一个仅处理用户管理的模块,一个只管理(添加/更新)电影的模块和另一个仅列出(读取)电影等的模块。
答案 1 :(得分:1)
我认为你可以在一个ZF2模块中完成大部分操作,可能称为“MovieManager”。 Movie和Person可以是MovieManager模块命名空间中的模型(即基类和数据库表)。
用户可以是一个单独的模块,用于处理用户身份验证和访问控制。您可以查看Evan Coury在可重复使用的ZF2用户模块上所做的工作:https://github.com/Zf-Commons/ZfcUser或者您可以保持简单并将User模型也放在MovieManager模块中。
我会使用Zend_Acl来定义允许给定用户执行的操作。或者你可以通过在User类中拥有一个基本的“role”属性并检查MovieManager控制器中的授权角色来更简单地做到这一点。