0

我正在学习 Symfony2,关于控制器的部分文档指出,控制器对象上的方法实际上是控制器,而对象更多的是控制器容器。

哪个部分具体称为控制器?我是 MVC 和 OOP 的新手,所以我只是想确保我做对了。

4

2 回答 2

1

在您分享的示例页面中,“HelloController 类”是控制器,其功能是控制器“方法”。

好的,他们将默认方法 indexAction() 称为控制器。

在这个 MVC 架构(以及大多数其他架构,如果不是全部)中,“索引”方法是在请求该控制器时调用的默认方法(函数)。

于 2013-01-28T01:42:42.563 回答
1

该页面实际上描述了Symfony2 创建者认可的约定。

在一些 MVC 框架中(尤其是在 Java 中)控制器是通过一个控制器的一个类约定来实现的,例如:

class ListContactsController {
    public function start() {
      // query db...
      return ...;
    }
}

class AddContactController {
    public function start($name, $details) {
      // insert into db...
      return ...;
    }
}

请注意,每个控制器类都有一个方法 start() 定义控制器实际执行的操作

在其他 MVC 框架(如 Symfony2 或 cake-php)中,控制器通过每个控制器一个方法的约定实现,为方便起见将它们组合在一起,例如:

class ContactsController {
    public function list() {
      // query db...
      return ...;
    }

    public function add($name, $details) {
      // insert into db...
      return ...;
    }
}

这里的约定假设每个控制器都实现为一个方法,而不是一个具有特定方法(如 start())的单独类

编辑:考虑这种差异的另一种方式是:

  • 每个控制器一个类假设有一个控制器实例(可能保持内部状态),并且当用户与视图交互时,视图通过回调(即控制器类中的方法)与该控制器实例通信。
  • 每个控制器一个方法假设任何状态都包含在传递给方法的参数中,并且当用户与视图交互时,视图正在与单独的控制器/动作进行通信。这些控制器被视为独立的概念。
于 2013-01-28T01:55:03.140 回答