Oop 在MVC中,控制器是对象还是函数?
我正在学习Symfony2,并声明控制器对象上的方法实际上是控制器,而对象更像是控制器容器Oop 在MVC中,控制器是对象还是函数?,oop,model-view-controller,Oop,Model View Controller,我正在学习Symfony2,并声明控制器对象上的方法实际上是控制器,而对象更像是控制器容器 哪一部分具体称为控制器?我是MVC和OOP新手,所以我只是想确保我的操作正确。在您共享的示例页面中,“类HelloController”是控制器,它的“函数”是控制器“方法” 好的,他们引用默认方法indexAction()作为控制器 在这个MVC体系结构中(以及大多数其他体系结构,如果不是全部的话),“index”方法是在请求控制器时调用的默认方法(函数)。该页面实际上描述了Symfony2创建者认可的
哪一部分具体称为控制器?我是MVC和OOP新手,所以我只是想确保我的操作正确。在您共享的示例页面中,“类HelloController”是控制器,它的“函数”是控制器“方法” 好的,他们引用默认方法indexAction()作为控制器
在这个MVC体系结构中(以及大多数其他体系结构,如果不是全部的话),“index”方法是在请求控制器时调用的默认方法(函数)。该页面实际上描述了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())实现的
编辑:思考这种差异的另一种方式是:
- 每个控制器一个类假设有一个控制器实例(可能持有内部状态),当用户与视图交互时,视图通过回调(即控制器类中的方法)与该控制器实例通信
- 每个控制器一个方法假设任何状态都包含在传递给方法的参数中,当用户与视图交互时,视图与单独的控制器/操作进行通信。这些控制器被视为独立的概念