MVC组件如何组合在一起?

eth*_*ros 4 php model-view-controller

我已经看到了一些MVC组件在Web上组合在一起的例子.


Controller从模型中检索数据并将其传递给View

这似乎有点冗长和凌乱.

$model = new Model;
$view = new View;
$view->set('foo', $model->getFoo());
$view->display();
Run Code Online (Sandbox Code Playgroud)

Controller将模型传递给视图

如果View需要来自多个模型的数据怎么办?

$model = new Model;
$view = new View($model);
$view->display(); //View takes what is needed from the Model
Run Code Online (Sandbox Code Playgroud)

Controller将View传递给Model

$view = new View;
$model = new Model($view);
$view->display(); //Model has told the View what is needed
Run Code Online (Sandbox Code Playgroud)

以下哪种方式是"最佳"的方式?如果没有,那是什么?

Dam*_*IEU 8

Controller从模型中检索数据并将其传递给View

正如你所说,它冗长而凌乱.但这是MVC理念下最合适的解决方案.

Controller将模型传递给视图

似乎也有效.但是,视图需要一些模型方法.这并不是真正的MVC精神.您的视图应该只呈现提供给它的数据,而不关心上下文.

Controller将View传递给Model

算那一个.这里很乱.