Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用面向对象和MVC的PHP_Php_Oop_Model View Controller_Class - Fatal编程技术网

使用面向对象和MVC的PHP

使用面向对象和MVC的PHP,php,oop,model-view-controller,class,Php,Oop,Model View Controller,Class,使用PHP5.x 问题,假设我想显示来自数据库的结果。假设数据库中的最后30个故事。使用OOP和MVC,理想的设置是您有一个连接到db的类,一个查询数据库以获取信息的类,然后是一个处理结果显示的类,然后是一个将所有结果放在一起的页面 基本上,我会将db连接对象传递给从数据库中获取故事结果的类,然后将故事类对象传递给显示类以构建视图,然后将其传递回视图本身并回显值?希望这是有意义的,只是想看看我是否理解这一点: dbconnect_class.php storyresults\u class.ph

使用PHP5.x

问题,假设我想显示来自数据库的结果。假设数据库中的最后30个故事。使用OOP和MVC,理想的设置是您有一个连接到db的类,一个查询数据库以获取信息的类,然后是一个处理结果显示的类,然后是一个将所有结果放在一起的页面

基本上,我会将db连接对象传递给从数据库中获取故事结果的类,然后将故事类对象传递给显示类以构建视图,然后将其传递回视图本身并回显值?希望这是有意义的,只是想看看我是否理解这一点:

dbconnect_class.php

storyresults\u class.php

storydisplay_class.php


将所有3个都包含到一个页面中,比如display_stories.php,我认为它是mvc中的控制器,然后运行代码并将其显示在视图中,该视图将以其基本形式包含到模板文件中。

mvc意味着模型->视图->控制器。在大多数框架中,请求到达控制器,控制器要求模型检索数据库结果,然后同一控制器将结果发送到视图以显示它们,这是MVC应用程序的基本分解。

不要传递结果对象。这意味着display类需要知道该类中的实现

您可以做的是让控制器获取结果,然后将结果传递给display类。 您可以创建一个数据类,将数据保存在适当的对象中,然后将其传递给显示类


然而,这只是一些面向对象的一般建议,但为了更好地实现mvc,您需要阅读这些建议。有些链接是由其他人提供的。

除非您使用模板引擎,否则很难不在视图文件中编写php代码。在我工作的公司,我们开发了一套UI组件,允许我们将数据绑定到控制器中的组件,并在视图中呈现该组件,类似于asp.net控件的工作方式。

我想这有点太宽泛了。看看各种框架以及它们是如何实现这些东西的。你会发现他们做的很相似,但又不同。同意-这里不负责。阅读一下现有的框架,这是一个好的开始:我想我的下一个问题是,建议您将从模型接收到的数据传递到视图类,还是只将其传递到view/html文件,让php在视图中使用foreach循环来循环结果?大多数框架都提供了模板语言,如jinja或smarty,它们能够根据需要操纵传入的数据,然而,大多数应用程序逻辑应该留在控制器内部,而视图应该只做一些基本的事情,比如foreach循环。在传递到视图文件之前,任何其他内容都应该由控制器准备好。因此,您在控制器中的说法调用数据类,该数据类查询数据库中我想要的内容,并从数据库返回结果,然后将从数据类返回的结果传递到显示类,显示类将遍历结果我想怎么显示就怎么显示。然后将显示类的最终结果传回控制器,然后将其传递到视图?这就是它的基础吗?通常,视图将是逻辑的最后一部分。你把数据传给它,然后它处理它。你不必把数据还给控制器。控制器的工作只是指示对象执行其工作,协调脚本中发生的操作,以及确定每个对象应该执行的操作和传递信息。