我正在尝试理解MVC的事情,到目前为止我知道它用于将业务逻辑与视图逻辑(HTML和CSS之类的东西)分开,但是当我需要组织文件时,我失败了。
假设我有3个文件:
所以看看我的例子:
右?
答案 0 :(得分:7)
错了,其实你在process.php中混合模型和控制器。
form.php和display.php只与用户交互,它们充当视图。
process.php充当Controller和Model
您应该将Controller和Model分开。你可以创建一个separte model.php并在那里做数据库的东西。因此,如果将来您需要更改数据库内容。你不需要触摸process.php。控制器和模型也将彼此分开
答案 1 :(得分:5)
我想说更像
没有实际的型号。如果你有一个数据结构来表示someDataClass.php中的数据,那将是一个模型。
您想要的是分离UI(视图),数据处理(控制器)和数据定义(模型)。
答案 2 :(得分:0)
不完全。
process.php是模型(它努力工作 - 使用数据库)
form.php和display.php是视图(显示给用户)
但是没有控制器。 控制器就像是模型和视图之间的粘合剂。控制器从View获取数据并说:“我将通过此模型处理它”。并且在处理之后它从Model获得结果并且说:“我将通过该视图向用户显示数据”
答案 3 :(得分:0)
这并不正确,正如rao_555所说。例如,控制器将没有向用户显示的表单。如果您有一个表单,然后是数据显示,那么这些都是单独的视图。
这是一个非常简洁的设计模式描述: http://book.cakephp.org/2.0/en/cakephp-overview/understanding-model-view-controller.html
答案 4 :(得分:0)
查看Wikipedia我也从这里开始形式了解MVC。如果你想开发自己的MVC框架,我可以强烈建议你先学习已经有很多选项的MVC框架(即CodeIgniter,Yii等)。祝你好运......
答案 5 :(得分:0)
MVC对解释非常开放。
然而,在你的情况下,有一点很清楚,“显示”是你的V(视图),“过程”是你的M(模型)。
问题是......“形式”真的是“C” - 控制器吗?
有几种方法可以看这个。实际上,正确的方法是让你的表单服务(Symfony,Laravel和ZF2使用的模式)。 然后你将表单对象传递给你的视图以在display.php中呈现表单,一旦表单被POST,你就会使用类似的东西:
// this will likely happen in your controller action
$form->setData($postData);
$form->validate();
另一方面,在CakePHP中,表单进一步分解为验证和用户输入“部分”。因此验证成为“M”的一部分,用户输入保持“V”。