我已经使用 Kohana 几个月了,对于组织代码/表示/数据库层的 MVC 风格还比较陌生。不幸的是,虽然有大量关于如何创建控制器、建立视图以及通过模型与数据库交互的文档,但我没有找到许多处理干净和建议的开发模式的资源。

让我举一个简单的例子:

我最新的项目有一个控制器,因为我不确定我是否应该制作更多的控制器……或者何时应该制作一个新的控制器。如何准确确定何时需要新控制器以及何时需要新模型?

有帮助吗?

解决方案

我建议你看看 面向资源的架构, , 第一的。这不会为您提供有关如何组织代码的任何直接指导。然而,当考虑资源时,在决定是否创建新控制器时会更容易。一旦您设法识别系统中的资源,通常最好为其创建一个模型和一个控制器 - 尽管这只是一个经验法则。

一些补充要点:

  • 寻找资源并为每个资源创建一个模型和一个控制器(经验法则)
  • 不要害怕为不持久的资源创建模型
  • 将控制器视为用户与业务域的“管道”或“线路” - 它们的作用是处理用户请求并将答案转发回给他们 - 让它们尽可能精简

其他提示

规则拇指如下:当我识别出一种新的<!> quot; item <!> quot;我的应用程序。需要管理,我问自己这些问题:

(1)这类物品应该持久吗?

(2)这个项目会有很多例子吗?

如果两个问题的答案都是肯定的,我得出结论,所述项应该是模型(或模型元素或域类,取决于MVC框架的术语)。当我定义一个新的模型元素时,我还为它定义了一个控制器,它将支持四个基本操作:创建,检索,更新,删除(可能你的框架可以为你生成一个默认控制器)。

您可能希望获得Martin Fowler的“企业应用程序架构模式”的副本。 Web Presentation部分广泛讨论了在使用Front Controller驱动的框架时如何构建代码,就像任何当前的MVC框架浪潮一样。

我喜欢具有明确定义的功能或功能集的小型控制器。这通常意味着每页一个控制器(或一组类似的页面)。在我的Kohana网站上, CSSMySite 我有关于博客,联系人,css和邮政控制器的信息。

所有关于控制器的功能都是设置模板。 博客控制器与博客模型交互以列出数据库中的多个帖子。帖子控制器与博客模型交互以显示数据库中的一个帖子。

每当我拥有持久性数据(博客文章)或多次使用(下拉框的状态列表)时,它就会进入模型。模型可以由不同的控制器访问,因此它不必是模型与控制器的一对一映射。

学习好MVC编程的好方法可能是花一些时间在Ruby-on-Rails上。我开始使用rails一段时间了,作为一个间接的结果,我相信我现在对MVC非常了解。我认为rails是MVC的缩影。至少,学习MVC可能是一种有趣的方式......你会怎么想?

以下是我在Kohana应用程序中所做的一个示例。

我需要一个'最新新闻'栏目,所以我设置了一个名为'新闻'的控制器,模型和视图。

我的新闻控制器有方法index()feed()media_releases()

我的模型包括db查询,它从MySQL数据库中获取我的新闻数据。

我的观点只是很多带有<?php echo $title; ?>之类的HTML。

您是否有理由不能定义一个可以全局运行数据库元数据的通用系统?在我看来,通常编写任何代码来访问和显示简单数据是一种不必要的冗余。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top