Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.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
用AJAX、MVC实现OOP-PHP?_Php_Ajax_Model View Controller_Architecture - Fatal编程技术网

用AJAX、MVC实现OOP-PHP?

用AJAX、MVC实现OOP-PHP?,php,ajax,model-view-controller,architecture,Php,Ajax,Model View Controller,Architecture,我对OOP范型(以及AJAX/jQuery)还不熟悉,但我想创建一个使用MVC架构的基本站点,使用PHP,并具有AJAX功能。我画了一个简要的图表,说明我目前如何“理解”架构。 假设在使用AJAX时,它充当控制器直接与模型交互以检索所需的任何功能?我添加的文件名只是为了让您了解我“认为”应该包括哪些内容。e、 g.index.php将是一个html/css模板,包含相关位置的模块(无论它们是什么)-news.php、navigation.php等。database.php/pager.php可

我对OOP范型(以及AJAX/jQuery)还不熟悉,但我想创建一个使用MVC架构的基本站点,使用PHP,并具有AJAX功能。我画了一个简要的图表,说明我目前如何“理解”架构。

假设在使用AJAX时,它充当控制器直接与模型交互以检索所需的任何功能?我添加的文件名只是为了让您了解我“认为”应该包括哪些内容。e、 g.index.php将是一个html/css模板,包含相关位置的模块(无论它们是什么)-news.php、navigation.php等。database.php/pager.php可能包含我为分页创建的类和扩展类,或者连接/查询数据库,我正在努力查看控制器组件可能是什么-它最终肯定会成为“第二个后端视图”-从模型调用要发送到视图的类


我可能已经把我的困惑很好地转移到了这里-视图、控制器和模型中应该包含什么。。。AJAX功能在技术上是另一个控制器吗?任何类似于我上面的图表都会非常有用。

好的,所以AJAX是一种传输方法,而不是像模型或控制器那样的应用程序

您的客户端将通过AJAX与一个或多个控制器进行通信

这些控制器使用或调用模型来处理不同类型的任务

然后,控制器或模型通过传输友好格式(JSON、YAML、XML)的消息或视图(一段HTML)响应请求

控制器处理请求,这意味着它接收初始客户端输入。根据具体情况,在应用程序中使用此输入之前,必须对其进行格式化、规范化、变异或转换

然后,控制器使用或调用模型;这意味着它要么处理业务逻辑本身(旧样式),并利用模型访问数据源,要么将应用程序的主要工作流完全交给模型(新样式)


第一个实例中的模型抽象出一个持久存储实体(如数据库)。在当代应用程序设计中,它还负责应用程序的主要业务逻辑。

您可以使用PHP最好的MVC体系结构“YII”。从这里获取更多信息
有一种方法可以看到这一点

  • Ajax是在MVC组件(如HTTP POST)之间发送数据的媒介。在这方面,它不会出现在MVC模式中
  • 如果JSON格式的实际显示实际上用于显示数据,则也可以将其视为视图

从中,您应该能够得出自己的结论。

MVC不是一种体系结构。这是一种设计模式。我错了,能解释一下区别吗?MVC是一种架构设计模式。@Chris see。MVC只是一种web表示模式。也请看@Gordon,你的意思是MVC根本不会影响你的架构吗?所以,请确保我理解(或者至少我认为我理解的东西)。。。假设我有一个“目录”网站,有人点击了一个类别链接(在视图中)。然后,控制器将接收该请求,然后调用从数据库获取信息所需的模型,另一个模型将该数据按X顺序排序,另一个模型删除X行(以及其他任何内容)。然后,控制器会将该信息发送回类别视图模板?(暂时忘掉AJAX)。我感觉另一张图表正在出现。。。如果不给出文件夹结构和代码示例,我很难进一步解释我的理解。。。我可能会这么做。我正在努力想象所有的东西是如何集成的——我想我理解这个模式,而不是如何实现它。你不需要那么多的模型。一个名为“Category”的模型将具有类似“create”(创建一个新类别)、“get_subcategories”(可能带有order参数)的方法。然后你会有另一个叫做“帖子”的帖子,你可以在这里“创建”、“删除”、“获取查看计数器”、“更新查看计数器”等等。。。它与数据库中的表大致成1:1的关系。