控制器与模型 - 需要解释

M. *_* A. 15 php model-view-controller orm design-patterns hmvc

我正处于"学习MVC"方式的开端.基本上,我没有面向对象编程的大问题,但是有一个技术方面需要澄清.看来我的理论还不够好.

目前,我正在使用KohanaPHP框架,版本3.

示例情况:我有一个网站,用户可以在其中提交文章.

所以我有以下结构:

classes/
    /controllers/
        article.php
    /models/
        articles.php
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.我对扩展Kohana_Model的模型没有问题但是我不确定我是否使用正确使用ORM的方式模型.

基本上当使用扩展Kohana_Model的模型时,我会将所有逻辑运算放在模型中.对于使用ORM的模型,我应该这样做吗?在网上的许多例子中,我看到控制器正在对来自数据库的用户输入/数据执行逻辑操作,这在我看来是不正确的.

假设我需要从数据库中获取几行,因此我在模型中创建了正确的方法并返回了对象.我认为这是对的,不是吗?

基本上,所有关于用户输入/数据的操作(从db中选择,插入到db,验证)我都放入模型中.这就是我理解MVC设计模式的方式.模型应该关注所有"机械"操作,控制器只是模型/视图之间的"桥梁",它是一个"前端"引擎.

这是一种正确的方法吗?

我知道对于更高级的用户来说这可能是一个愚蠢的问题,但我想只学习好的做法.如果有人能提供一些澄清,我会很高兴.

Poe*_*rin 54

简而言之,您的模型对数据执行所有操作(无论是传入,传出,数据库,文件......数据),您的视图应该负责显示数据.控制器应调用必要的模型方法以准备好将数据传递给视图.控制器不应对数据执行任何更改,但应对其进行测试以正确完成必要的操作.

希望我说得够清楚,如果这对你来说不清楚,请告诉我.

  • *控制器不应该对数据执行任何更改,但它应该测试它以正确完成必要的操作。*如果我没听错……我们应该对我们的控制器执行数据验证吗? (2认同)