Php 模型调用视图,还是视图调用模型?

Php 模型调用视图,还是视图调用模型?,php,codeigniter,model-view-controller,Php,Codeigniter,Model View Controller,在我以前的公司中,有一个全ajaxwebap,使用的是一个从头开始的框架。页面部分刷新的方式是使用字符串调用控制器,控制器将加载一个或多个视图文件。视图文件几乎总是调用模型中的一个或多个类。我到那里的时候就是这样 我现在正在与一家新公司合作开发一个新系统,并正在寻找框架候选者。关于codeigniter的30分钟教程显示了调用模型的控制器,以及加载视图的模型 这与我过去的经验相反,所以我想问哪种策略更常见。在我看来,视图是一个“外壳”或结构似乎更为合理,但它仅限于需要模型来获取业务规则 我不确定

在我以前的公司中,有一个全ajaxwebap,使用的是一个从头开始的框架。页面部分刷新的方式是使用字符串调用控制器,控制器将加载一个或多个视图文件。视图文件几乎总是调用模型中的一个或多个类。我到那里的时候就是这样

我现在正在与一家新公司合作开发一个新系统,并正在寻找框架候选者。关于codeigniter的30分钟教程显示了调用模型的控制器,以及加载视图的模型

这与我过去的经验相反,所以我想问哪种策略更常见。在我看来,视图是一个“外壳”或结构似乎更为合理,但它仅限于需要模型来获取业务规则


我不确定我是否应该在这里分享一个链接,我不是在推广codeigniter,但是教程大约在10:00。谢谢

教程。有很多

控制器调用模型并将数据传递给视图。这是标准答案。然而,我现在倾向于-控制器分配特定的视图,然后调用模板,传递$data

然后在模板中--调用一个模型来创建该模板的导航栏,还可以选择页面显示模型

否则——要么你有my_控制器,所有通过它的东西都可以调用页面显示、导航等

或者,您必须在每个控制器中输入页面显示详细信息。就我个人而言,我不太喜欢我的_控制器设计模式,在复杂控制器中对导航栏的调用也不是最优的

因此,在这种情况下,可以认为是一个视图——一个简单的模板文件——将调用一个模型。但在这种情况下,它并不是真正的“视图”,因为它不直接显示任何内容——模板调用导航视图、页眉、页脚视图等——然后实际页面内容由控制器分配

这也给了你更多的可移植性——当你需要改变页面显示或导航的细节时,你只需要去一个地方


最后,有许多php框架和许多观点。经过长时间的休眠后,codeigniter框架正在积极开发中。然而,如果您是从第一步开始的,那么也可以看看节点,它有一些引人注目的特性,这取决于您的用例

上次我检查时,该视图用于显示信息,可能还收集了一些信息(要传递给控制器)。但是视图不应该直接调用模型或控制器。分开你的责任。同意@AndreiP。控制器是“中心部件”。它必须是调用模型并加载视图的那个。模型唯一应该调用的是数据库。视图从不调用任何东西。对于CodeIgniter,最常见的标准是,控制器调用模型来检索数据,然后将其传递给视图。视图和模型之间不应该有任何直接的联系。我想你会感到困惑。该类在非您的模型中称为
Site
<代码>站点是本例中的控制器。控制器正在加载视图。如果需要任何数据,控制器将首先从模型中收集数据,并将其加载到视图中。也许您感到困惑的原因是,您的老公司的定制框架设计用于更多地使用ajax,这让您认为“视图优先”。AJAX调用实际上来自视图,但在本例中,它会触发控制器,然后控制器收集数据并将其返回到视图。@tereško,感谢您的分析。我理解你的观点。CI确实缺少许多组件,从高级开发人员的角度来看,我同意。。然而,我确实相信这是一个很好的框架,它提供了一个很好的转换,与过程编码相比,它更深入地理解了MVC。您推荐哪些PHP框架,为什么?