Laravel

来自站长百科
跳转至: 导航、​ 搜索

Laravel是一个面向Web平台的PHP框架,为创建应用程序提供了一个结构和起点,在提供强大功能(如彻底的依赖注入、表达式数据库抽象层、队列和计划任务、单元和集成测试等)的同时,提供惊人的开发者体验。

Laravel优势[ ]

渐进式框架[ ]

大家喜欢称 Laravel 为“渐进式”框架。如果刚开始接触 Web 开发,Laravel 庞大的文档库、指南和视频教程将帮助在不感到压力的情况下学习基础知识。

如果是一名资深开发者,Laravel 为提供了强大的工具,用于依赖注入、单元测试、队列、实时事件等。Laravel 已经为构建专业 Web 应用程序并准备好处理企业级工作负载进行了微调。

可扩展的框架[ ]

Laravel 极具可扩展性。得益于 PHP 的可扩展性和 Laravel 对 Redis 等快速、分布式缓存系统的内置支持,Laravel 的水平扩展非常简单。事实上,Laravel 应用程序已经轻松扩展,以处理每月数亿次的请求。像 Laravel Vapor 这样的平台允许在 AWS 的最新无服务器技术上以几乎无限的规模运行 Laravel 应用程序。

社区框架[ ]

Laravel 结合了 PHP 生态系统中最好的包,提供了最健壮和对开发者最友好的框架。此外,来自世界各地的数千名才华横溢的开发者为框架做出了贡献。谁知道,也许你甚至会成为 Laravel 的贡献者。

Laravel生命周期[ ]

第一步[ ]

所有请求进入 Laravel 应用程序的入口点是 public/index.php 文件。 Web 服务器(Apache / Nginx)配置将所有请求定向到这个文件。index.php 文件中没有太多代码。相反,它是加载框架其余部分的起点。

index.php 文件加载 Composer 生成的自动加载器定义,然后从 bootstrap/app.php 获取 Laravel 应用程序的实例。Laravel 自己采取的第一个动作是创建应用程序 / 服务容器的实例。

HTTP/控制台内核[ ]

接下来,根据请求进入应用程序的类型,使用应用程序实例的 handleRequest 或 handleCommand 方法,将传入的请求发送到 HTTP 内核或控制台内核。这两个内核作为所有请求流经的中心位置。现在,让我们只关注 HTTP 内核,它是 Illuminate\Foundation\Http\Kernel 的实例。

HTTP 内核定义了一个 bootstrappers 数组,这些 bootstrappers 将在请求执行之前运行。这些引导程序配置错误处理、配置日志记录、检测应用环境,以及执行请求实际处理之前需要完成的其他任务。通常,这些类处理不需要担心的内部 Laravel 配置。

HTTP 内核还负责将请求通过应用程序的中间件堆栈传递。这些中间件处理读写 HTTP 会话、确定应用程序是否处于维护模式、验证 CSRF 令牌 等。我们很快会讨论这些。

HTTP 内核的 handle 方法的方法签名非常简单:它接收一个 Request 并返回一个 Response。将内核视为代表整个应用程序的大黑盒。向它提供 HTTP 请求,它将返回 HTTP 响应。

服务提供者[ ]

内核引导过程中最重要的动作之一是加载应用程序的服务提供者。服务提供者负责引导框架的各种组件,如数据库、队列、验证和路由组件。

Laravel 将遍历这个提供者列表并实例化它们。在实例化提供者之后,将调用所有提供者的 register 方法。然后,一旦所有提供者都已注册,将在每个提供者上调用 boot 方法。这样做是为了服务提供者可以依赖于在其 boot 方法执行时每个容器绑定都已注册并可用。

几乎每个 Laravel 提供的主要功能都是通过服务提供者引导和配置的。由于它们引导和配置了框架提供的如此多的功能,服务提供者是整个 Laravel 引导过程中最重要的部分。

虽然框架内部使用了数十个服务提供者,但也可以创建自己的服务提供者。可以在 bootstrap/providers.php 文件中找到应用程序正在使用的用户定义或第三方服务提供者的列表。

路由[ ]

一旦应用程序被引导并且所有服务提供者都已注册,Request 将被交给路由器进行分派。路由器将请求分派给路由或控制器,以及运行任何特定于路由的中间件。

中间件为过滤或检查进入应用程序的 HTTP 请求提供了一种便利机制。例如,Laravel 包括一个中间件,用于验证应用程序用户是否已认证。如果用户未认证,中间件将重定向用户到登录页面。然而,如果用户已认证,中间件将允许请求进一步进入应用程序。一些中间件被分配给应用程序中的所有路由,如 PreventRequestsDuringMaintenance,而一些只分配给特定路由或路由组。可以通过阅读完整的中间件文档来了解更多关于中间件的信息。

如果请求通过了分配给匹配路由的所有中间件,路由或控制器方法将被执行,并且路由或控制器方法返回的响应将通过路由的中间件链返回。

结束[ ]

一旦路由或控制器方法返回了响应,响应将通过路由的中间件链回传,给应用程序一个机会修改或检查传出的响应。

最后,一旦响应通过中间件回传,HTTP 内核的 handle 方法将响应对象返回给应用程序实例的 handleRequest 方法,此方法调用返回的响应的 send 方法。send 方法将响应内容发送给用户的 Web 浏览器

相关条目[ ]

PHP