【发布时间】:2019-05-03 21:46:51
【问题描述】:
我们(大多数人)都知道控制器的工作是处理客户端(例如网络浏览器)发出的请求,获取模型,渲染视图。
我的高级开发人员有 20 年的经验,伴随着原生 PHP 成长,不像我 4 年的经验,伴随着 PHP MVC 框架成长。我看到我的高级开发人员在另一个控制器的操作函数中创建了一个控制器的对象,因为他想使用与以下示例相同的业务逻辑。
class FooController extend Controller {
public function view($id) {
// Business logic goes here...
// Pseudo code
// If request comes from BarController
// Render no layout, only view template.
// If request comes from browser
// Render view template with layout.
}
}
class BarController extends Controller {
public function viewFoo($id) {
// Create an object of FooController so that we can reuse the business logic of the view function.
$foo = new FooController();
$foo_view = $foo->view($id);
// Render $foo_view template.
}
}
遵循 MVC 设计模式,在另一个控制器(在本例中为 BarController::viewFoo($id))中创建控制器的对象(在本例中为 FooController)是一种好习惯吗?
【问题讨论】:
-
没有。另外,您所描述的是不是 MVC。
-
@tereško 我同意你的看法。我不会创建控制器的对象(用于处理用户请求),也不会调用控制器的操作函数来重用该操作函数中的业务逻辑。相反,我会将业务逻辑放在模型中,并且在任何控制器中,我宁愿创建该模型的对象并在业务逻辑所在的位置调用该模型的函数。
标签: php model-view-controller methods controller