我是否需要为每个控制器创建一个模型?什么是更好的做法?

时间:2011-09-02 17:39:07

标签: php oop model-view-controller frameworks

假设我有一个模型'Retrieve.php',我有一个名为'Retrieve'的类,它从数据库中检索帖子。然后我在Index.php中有Controller,我加载该模型,检索帖子并将其传递给视图。

现在,我还有一个页面,我必须显示这些帖子。让我们说Sidebar.php或其他什么。现在再次,我必须检索这些帖子。那么,我可以再次加载'Retrieve.php',或者我还要为Sidebar.php再创建一个扩展'Retrieve.php'的模型吗?什么是更好的做法?

而且,一般来说,我是否需要为每个控制器在一个好的PHP MVC中创建一个新模型?如果是,可能Controller和Model应该命名相同?还有更多建议/意见吗?

谢谢。

4 个答案:

答案 0 :(得分:5)

通常,模型应代表业务实体,而不是流程。即,它应该是名词而不是动词。在您的情况下,您需要一个帖子的模型,该模型上的方法将执行“您对帖子执行的操作”。然后,控制器描述页面发生的操作。在这种情况下,/ post页面的控制器将检索一个帖子并将其传递给视图进行渲染。

答案 1 :(得分:1)

仅创建您需要的模型。请记住,MVC的重点在于模型与视图分离。这意味着重复使用完成任务所需的任何东西都是完美的。如果您有多个需要访问相同数据的视图,请重复使用相同的模型。只要确保给出模型的描述性名称,就不会混淆它们应该代表什么。

答案 2 :(得分:0)

对于该模型所代表的每个数据结构,您应该只有一个Model类。因此,如果您有5个控制器,每个控制器访问相同的模型,您仍然应该只有一个Model类。

答案 3 :(得分:0)

不 -

模型应该是你的应用程序管理的 - 所以代替Retrieve,你的模型类应该是Post(也许你的域名中有名词的其他Model类 - Thread,Author ......)

控制器应该访问他们完成工作所需的模型类;一个模型类可以被多个控制器使用,一个控制器可以使用多个模型类。