我使用PHP并了解MVC的工作原理。有一点我不确定MVC。直接在视图中创建Model对象而不通过Controller传递它是一个好习惯,因为有时不需要在Controller中处理模型吗?这样做有什么不利之处吗?
答案 0 :(得分:-1)
答案 1 :(得分:-2)
您的view
仅显示结果,因此new Model()
必须转到控制器,然后传递给查看。
答案 2 :(得分:-2)
是的 - 您的观点不应该依赖于模型保持不变。
比如说,您使用的是具有->forename
和->surname
属性的模型。在您看来,您只需直接调用它们。
然后您稍后决定要为模型添加变更器和访问器(getter和setter),因此您将使用->getForename()
和->getSurname()
因为您想要对它们进行一些预处理,以确保资本化是正确的。
现在您需要浏览所有控制器和视图,因为需要更改使用情况。
如果您只是在控制器中完成了所有模型处理,然后将一组标准化数据传递给视图,那么您只需要更新控制器。
视图不应该对模型有任何期望,它应该只需要从控制器获取特定数据。
您可以在Controller中执行以下操作:
$view = new View('my.file', [
'user' => [
'forename' => $user->forename,
'surname' => $user->surname,
],
] );
这仍然可以在您的视图中使用$user['forename']
,但现在该数据的格式来自Controller,而不是模型。