Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.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
Php “传统”的定义是什么;第页“;MVC中的概念?_Php_Model View Controller_Codeigniter_Controller - Fatal编程技术网

Php “传统”的定义是什么;第页“;MVC中的概念?

Php “传统”的定义是什么;第页“;MVC中的概念?,php,model-view-controller,codeigniter,controller,Php,Model View Controller,Codeigniter,Controller,我目前在使用PHP时选择使用CodeIgniter作为框架。我正在努力解决的问题之一是“页面”的概念,以及如何在MVC中正确地表示它。据我所知,CodeIgniter有一个前端控制器,可以委托给页面控制器。在我的思考过程中,每个页面都有自己的控制器。尽管我经常看到有人使用一个塞满了许多方法的页面控制器。从这个意义上说,每个动作都是它自己的页面 我从来没有真正喜欢将许多方法塞进一个控制器的想法,因为如果一次只需要控制器中的一个或两个方法,似乎会有太多的开销。每个页面都有自己的控制器似乎更合理,并且

我目前在使用PHP时选择使用CodeIgniter作为框架。我正在努力解决的问题之一是“页面”的概念,以及如何在MVC中正确地表示它。据我所知,CodeIgniter有一个前端控制器,可以委托给页面控制器。在我的思考过程中,每个页面都有自己的控制器。尽管我经常看到有人使用一个塞满了许多方法的页面控制器。从这个意义上说,每个动作都是它自己的页面

我从来没有真正喜欢将许多方法塞进一个控制器的想法,因为如果一次只需要控制器中的一个或两个方法,似乎会有太多的开销。每个页面都有自己的控制器似乎更合理,并且操作只对应于您可以在该特定页面上执行的操作。我是不是想错了


更令人困惑的是,我会注意到,在一些web应用程序中,它们将有一个控制器,该控制器将有多种方法(即登录、注册、查看、编辑等),但在其他应用程序中,它们实际上有一个登录控制器和一个注册控制器。“页面控制器”的正确用法是什么?

从域的角度来看,我肯定地说,每个域上下文有一个控制器更有意义。不一定每页一个,尽管这可能取决于上下文。我所说的上下文是指“密切相关的行为”

例如,帐户控制器应处理登录、注册、注销、更改密码和操作。他们都生活在一个“账户”的环境中


以Stackoverflow为例。我会有一个“问题”控制器,它会有诸如DisplayQuestion、AskQuestion、Delete Question、MostRecent Question等操作。它们都是不同的“视图/页面”,由一个控制器管理。

你说得对,控制器中的每个公共方法都变成了“页面”。也就是说,它不一定是一个网页,一个动作可以是一个数据帖子,然后重定向到另一个动作/页面,所以页面不一定意味着“网页”

MVC使用许多约定来使事情顺利进行。例如,每个控制器必须以“controller”结尾。因此,一组用户页面(创建、编辑、删除等)将位于UserController中。在“视图”文件夹中,控制器类中的每个公共方法或操作都将成为与控制器前缀匹配的文件夹(在本例中为用户文件夹)中的网页。因此,controller类中名为“Delete”的操作将指向用户文件夹中的Delete.aspx页面


将所有这些方法放在一个类中似乎有点尴尬,但它很好地组织了基于对象的类似功能。

在MVC中,将三个方法放在一起就得到了“页面”。模型处理数据层,视图处理用户看到的实际HTML,控制器决定它们如何交互以显示所需数据。我对现有控制器使用单独控制器或其他方法的选择取决于操作与我拥有的其他控制器的距离。假设我想要一个UserAdmin控制器,现在它最有可能处理添加用户、删除用户、更改密码等。如果我添加的功能涉及以某种方式更改用户帐户,我最有可能将其放在那里。如果我把它们分离到它们自己的控制器中,我自然会添加另一个控制器。控制器允许您将类似的任务放在一起,以便它们可以利用类中已有的任务,而不必重新创建已经完成的任务。很多都是程序员认为应该怎么做。对您有意义的内容对我来说可能没有意义,这是开发人员(或设计师)的选择。

您关于每个控制器的观点必须以“控制器”结尾,仅适用于Asp.Net Mvc框架,而不一定适用于他正在处理的PHP框架。