7

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

让我举一个简单的例子:

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

4

7 回答 7

3

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

一些额外的点:

  • 寻找资源并为每个资源创建一个模型和一个控制器(经验法则)
  • 不要害怕为不持久的资源创建模型
  • 将控制器视为将用户“连接”到业务域的“管道”或“接线”——它们的作用是处理用户请求并将答案转发给他们——使它们尽可能薄
于 2009-06-20T10:04:11.720 回答
2

规则拇指如下:当我识别出我的应用程序的一种新的“项目”时。需要管理,我问自己这些问题:

(1) 这类项目应该是持久性的吗?

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

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

于 2009-06-19T14:34:44.047 回答
2

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

于 2009-06-19T19:52:09.373 回答
1

我喜欢具有明确定义的功能或一组功能的小型控制器。这通常意味着每个页面(或一组类似页面)一个控制器。在我的 Kohana 站点CSSMySite中,我有 about、blog、contact、css 和 post 控制器。

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

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

于 2009-06-22T11:49:53.080 回答
1

也许学习好的 MVC 编程的一个好方法是花一些时间在 Ruby-on-Rails 上。不久前我开始使用 Rails,作为间接结果,我相信我现在对 MVC 有了很好的理解。我将 Rails 视为 MVC 的缩影。至少,这可能是一种学习 MVC 的有趣方式……你会怎么想?

于 2010-01-19T20:19:30.307 回答
0

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

我需要一个“最新消息”部分,所以我设置了一个名为“新闻”的控制器、模型和视图。

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

我的模型由数据库查询组成,这些查询从 MySQL 数据库中获取我的新闻数据。

我的观点只是很多 HTML 和一些<?php echo $title; ?>类似的东西。

于 2009-06-22T02:44:47.280 回答
0

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

于 2009-06-22T02:57:13.963 回答