控制器和路由器的区别?
Difference between controller and router?
我目前正在整理一个小的 mvc 框架进行练习,我有一些 laravel 经验,所以它大致基于此。我制作了一个路由器,它只是 returns 您设置的 url 的指定视图。
现在我还制作了控制器,它拆分 url 并使用基础 url 之后的第一部分作为控制器,第二部分作为动作。这将加载与控制器对应的文件以及该文件中与操作对应的方法。
因此,如果 url 类似于:url.com/users/index 它将加载一个 UsersController.php 文件并在该文件中查找 index() 方法。
现在我想知道控制器和路由器之间的确切区别是什么?它像指定的吗?其中路由器稍微简单一点,只对给定的确切内容做出反应 url,而路由器将其切碎并具有更多深度?
我目前拥有的东西似乎有很多重叠。
控制器位于模型和视图之间。它与两者通信以响应请求。
路由器选择哪个控制器(以及该控制器上的哪个方法)处理请求。例如,它可能决定请求 'product/view/123' 应该调用 ProductController 的 View 方法,将 123 作为 参数传递.
路由器也可能转换 urls。而不是像您所说的那样使用 url 中的方法和操作。你也可以有 www.example.com/members。路由器会将其转换为 UsersController 的 Index 方法。这允许 'pretty' url 的用户映射到合理命名的控制器。
路由器将请求指向控制器。
(假设路由器不是指网络硬件或木工工具!)
路由器接受请求并决定哪些 controller/controller 方法将处理请求。
控制器接受请求并处理它!
Now I've also made controller that splits the url and uses the first part after the base url as controller and second part as action. This loads a file corresponding with the controller and a method within that file corresponding with the action.
这不是真正的控制器(就 MVC 而言)它是路由的一部分。
例如以 [GET] uri: 为例。com/article/view/123
MVC 路由器将解析 uri 并找到以下段
- 文章
- 查看
- 123
默认情况下,大多数路由器现在会实例化 articleController
并调用其 view
方法,将 123
作为参数传入。 (您也可以使用一些 getUriSegment(segmentIdx)
方法,这是您框架的设计选择。)
ArticleController
将有一个带有 $articleId
参数的 view
方法。此方法可能会执行以下操作:获取指定的文章(例如,通过模型从数据库中获取)然后显示它(可能通过返回已给出模型返回的文章的视图)
我目前正在整理一个小的 mvc 框架进行练习,我有一些 laravel 经验,所以它大致基于此。我制作了一个路由器,它只是 returns 您设置的 url 的指定视图。
现在我还制作了控制器,它拆分 url 并使用基础 url 之后的第一部分作为控制器,第二部分作为动作。这将加载与控制器对应的文件以及该文件中与操作对应的方法。
因此,如果 url 类似于:url.com/users/index 它将加载一个 UsersController.php 文件并在该文件中查找 index() 方法。
现在我想知道控制器和路由器之间的确切区别是什么?它像指定的吗?其中路由器稍微简单一点,只对给定的确切内容做出反应 url,而路由器将其切碎并具有更多深度?
我目前拥有的东西似乎有很多重叠。
控制器位于模型和视图之间。它与两者通信以响应请求。
路由器选择哪个控制器(以及该控制器上的哪个方法)处理请求。例如,它可能决定请求 'product/view/123' 应该调用 ProductController 的 View 方法,将 123 作为 参数传递.
路由器也可能转换 urls。而不是像您所说的那样使用 url 中的方法和操作。你也可以有 www.example.com/members。路由器会将其转换为 UsersController 的 Index 方法。这允许 'pretty' url 的用户映射到合理命名的控制器。
路由器将请求指向控制器。
(假设路由器不是指网络硬件或木工工具!)
路由器接受请求并决定哪些 controller/controller 方法将处理请求。
控制器接受请求并处理它!
Now I've also made controller that splits the url and uses the first part after the base url as controller and second part as action. This loads a file corresponding with the controller and a method within that file corresponding with the action.
这不是真正的控制器(就 MVC 而言)它是路由的一部分。
例如以 [GET] uri: 为例。com/article/view/123 MVC 路由器将解析 uri 并找到以下段
- 文章
- 查看
- 123
默认情况下,大多数路由器现在会实例化 articleController
并调用其 view
方法,将 123
作为参数传入。 (您也可以使用一些 getUriSegment(segmentIdx)
方法,这是您框架的设计选择。)
ArticleController
将有一个带有 $articleId
参数的 view
方法。此方法可能会执行以下操作:获取指定的文章(例如,通过模型从数据库中获取)然后显示它(可能通过返回已给出模型返回的文章的视图)