Model view controller MVC中每个控制器有多少个操作
我知道这个问题的标题有点模糊,但我想不出更清楚的。(尽管这看起来像是一个ZF问题,但实际上只是一个php MVC问题。) 我最近将一个项目从ZF2迁移到ZF3。主要区别在于每个模型和控制器都需要依赖注入。由于我现在已经注入了所有依赖项,而不是使用serviceLocator(懒洋洋地加载服务)调用它们,所以我遇到了几个问题 现在有几个控制器看起来非常臃肿,正在实例化他们不使用的服务。仅仅因为不同的操作需要一个服务,整个控制器现在就实例化了一个服务。尽管实例化一个服务的性能并不是很高,但它仍然感觉像是一种浪费 我的问题是,自从我开始使用MVC以来,这基本上就是我的问题,你会如何具体制作一个控制器?每个控制器有多少个操作?或者在这种情况下:每个控制器有多少个服务 我现在甚至在考虑将每个控制器拆分,这样所有操作都有自己的控制器。这是个好/坏主意吗Model view controller MVC中每个控制器有多少个操作,model-view-controller,design-patterns,controller,zend-framework2,zend-framework3,Model View Controller,Design Patterns,Controller,Zend Framework2,Zend Framework3,我知道这个问题的标题有点模糊,但我想不出更清楚的。(尽管这看起来像是一个ZF问题,但实际上只是一个php MVC问题。) 我最近将一个项目从ZF2迁移到ZF3。主要区别在于每个模型和控制器都需要依赖注入。由于我现在已经注入了所有依赖项,而不是使用serviceLocator(懒洋洋地加载服务)调用它们,所以我遇到了几个问题 现在有几个控制器看起来非常臃肿,正在实例化他们不使用的服务。仅仅因为不同的操作需要一个服务,整个控制器现在就实例化了一个服务。尽管实例化一个服务的性能并不是很高,但它仍然感觉
有什么想法吗 我个人倾向于让控制器专注于单个动作。但它应该能够做/调用完成行动所需的一切 例如,您有一个产品实体。对于基本CRUD(我选择iCRUD,'为什么不?:p),我将创建5个控制器:索引、添加、查看、编辑、删除(无论使用添加/创建、查看/读取等) 最大的一个是编辑,它必须“获取”现有产品,将其加载到表单中并返回,只用于设置编辑页面。在发布数据时,它必须获取现有产品,将其加载到表单中,获取请求数据并将其加载到表单中,验证、准备存储、存储并返回响应 但我选择让它能够完成整个事情,但让它专注于这一行动 当然,您可以将所有(i)CRUD操作放在一个控制器中,并且仍然正确地应用MVC。一、 就个人而言,把这些分开比较干净。从名称空间中,您应该能够推断出您正在查看的类的用途 下面是一个项目的示例: 在我看来,很明显,这里我们要看的是用户模块,控制器子名称空间集中在用户对象上。(此模块中的用户对象有同级:路由、角色等)
必须说,这样做既有赞成的,也有反对的 专业人士:
- 把你需要的东西清理干净
- 关注点分离
- 相当干燥(不要重复)
- 易于为不同主题重复使用动作控制器(例如,创建更抽象的“ViewController”,并按主题实现:产品、用户、地址等)
- 相当干燥(不要重复)(看我在那里做了什么?需要使用预加载表单等)
- Zend Framework 3等框架中的附加配置(要注册的附加控制器/工厂组合)
- 设置时间更长,重构“更多”