任何人都可以给我指出一张显示正常 MVC 位与以下内容之间关系的图表吗:
Laravel 似乎有很多中间商,我很难看到全局。
编辑
考虑了亚历克斯的答案(如下)后,我认为这样的图表是可能的。由于其中一些与一般 OOP 原则相关,我认为 UML 序列图将是答案。
由于您的问题非常广泛,我认为在一张图片中提供所有解释就像在一个蛋糕中包含所有风味一样。 @Alex 在上面的回答中,已经准确地涵盖了解释。这是我的看法:
MVC:一种设计模式建议开发人员不要将业务逻辑(模型)与表示(视图)以及用户请求处理程序(控制器)混合在一起。
要记住的要点:
MVC stands for Model, View and Controller.
Model is responsible for maintaining application data and business logic.
View is a user interface of the application, which displays the data.
Controller handles user's requests and renders appropriate View with Model data
更多详细信息:http://www.tutorialsteacher.com/mvc/mvc-architecture
术语:中间件、Guards、Facade、Contracts 是 Laravel 框架的应用程序逻辑的一部分,用于不同用例的请求周期,以隔离应用程序中的代码以提高可维护性、可理解性和内聚性。虽然即使是单页脚本也足以完成所需的工作,但维护起来会很麻烦。
中间件:Laravel 过滤进入应用程序的 HTTP 请求的方式。在请求生命周期中,它位于路由器之后、控制器之前。
更多信息:https://laravel.com/docs/5.6/middleware
Guards:它们定义了系统在注册和身份验证时如何存储和检索有关用户的信息。
更多信息:https://laravel.com/docs/5.6/authentication
facades:Facades 为应用程序服务容器中可用的类提供“静态”接口。 https://laravel.com/docs/5.6/facades
Contracts:为了松散耦合和简单性。 Laravel 的合约是一组定义框架提供的核心服务的接口。例如,Illuminate\Contracts\Queue\Queue 合约定义了排队作业所需的方法,而 Illuminate\Contracts\Mail\Mailer 合约定义了发送电子邮件所需的方法。
抱歉。这不是一个答案。但只是一些意见。
您正在尝试将“苹果”与“橙子”进行比较。
MVC 概念是一个专门或主要与 WEB 开发相关的概念。
建议开发人员不要将内容(模型)与表示(视图)和逻辑(控制器)混合。
另一方面,你提到的东西:中间件、守卫、外观、合约。
它们大多都是关于一般编程概念和 OOP 原则的类部分或扩展。
不要谈论您的具体术语:
middleware, Guards, facades, Contracts
,只谈论 OOP。
任何 OOP 原则都可以应用于 MVC 的任何部分。
我们可以使用 OOP(类、接口等)创建模型,也可以采用某种过程方式或 OOP、过程和经典意大利面的混合方式来创建模型。
视图和控制器也是如此。您可以使用一些 OOP 原则和技术,也可以限制它们的使用或忽略它们。这取决于开发人员和/或可能取决于项目范围和设计。
回到你的列表:中间件、守卫、外观、合约。我想说,这些只是现代软件开发世界中存在的 OOP 术语和实践大家族的一部分。我的意思是,不幸的是我们无法在 MVC 和一些 OOP 实践之间进行任何比较。
我要指出的另一个想法是,OOP 比 MVC、WEB 和数据表示逻辑类软件更通用。
假设我们需要开发新的操作系统内核。我想说,对于这样的应用程序来说,应用 MVC 的空间并不大。但 OOP 仍然有用。对于嵌入式系统,或者一些特定的软件、驱动程序、服务器等也是如此......