Code前端首页关于Code前端联系我们

Laravel's Veil:用于构建 Web 应用程序的跨平台 PHP 框架

terry 2年前 (2023-09-24) 阅读数 66 #后端开发

Laravel面纱:用于构建Web应用程序的跨平台PHP框架

近年来,开发 Web 应用程序和网站变得更加容易。即使是我们中技术最困难的人也已经非常擅长使用 WordPress 和 Wix 等产品。

对于更高级的开发人员,有许多工具可以帮助简化开发过程。最有用的工具之一是Laravel。

本文回答了“Laravel是什么?”这个问题。通过将其分解为 Web 开发中使用的 PHP 框架基础知识的概述。接下来,我们概述一下Laravel的功能,列出Laravel的重要结构和组件,并描述一些比较有用的Laravel包。

Laravel是什么?

对“Laravel是什么?”这个问题的简单回答一句话简介:Laravel 是一个用于构建 Web 应用程序的跨平台 PHP 框架。

但真正了解Laravel的兴趣和用途需要更深入的了解。 Laravel 允许开发人员利用广泛的预编程功能库(例如身份验证、路由和 HTML 模板)。使用此库可以轻松快速构建强大的 Web 应用程序,同时最大限度地减少所需的编码量。

Laravel 提供了高效的开发环境和直观且富有表现力的命令行界面。此外,Laravel使用对象关系映射(ORM)来简化数据访问和操作。

Laravel 应用程序具有高度可扩展性,并且具有易于维护的代码库。借助 Laravel 的模块化打包系统和强大的依赖管理,开发人员还可以无缝地向其应用程序添加功能。

Laravel是前端还是后端?

Laravel 主要是一个后端开发框架,尽管它确实提供了一些前端功能。不过,Laravel的很多特征都与正面无关。

Laravel 是一种编程语言吗?

Laravel 是一个 PHP 框架,它使用脚本语言而不是严格的 PHP 编程语言。尽管脚本语言和编程语言相关,但它们有几个明显的区别,主要在易用性和执行速度方面。

脚本语言是特定于平台的解释语言。相比之下,编程语言是与平台无关的编译语言。由于脚本语言是特定于平台的,因此它们取决于所使用的应用程序的编译器。

使用脚本语言构建的应用程序是在运行时编译的,这意味着每条指令在运行时都被单独解释,使得应用程序比预编译的应用程序慢。如果检测到运行时错误,运行时编译还会导致应用程序停止或关闭;相反,预编译的应用程序在编译期间执行错误检查,从而使它们在运行时更加高效。然而,对于很多用户来说,脚本语言的缺点大于其易用性和迭代性。

什么是 PHP 框架?

PHP(PHP 超文本预处理器的递归缩写)是一种广泛用于 Web 开发的开源服务器端脚本语言。 2021 年初,几乎 80% 的网站使用 PHP。虽然很多人可能不熟悉PHP,但是大家都熟悉最著名的PHP应用程序之一——WordPress。

PHP 框架提供了一组代码库,其中包含预编程模块,使用户可以更快地构建应用程序。它们为 Web 开发人员提供了许多好处,例如更快的开发、更少的代码编写需求以及更高的安全性。它们还帮助新手开发人员建立良好的编码实践,因为他们需要特定的代码组织。此外,PHP 框架通常比从头构建的应用程序需要更少的维护。

许多现代 PHP 框架都是面向对象的。这就是为什么在深入了解框架之前对类、对象和继承等概念有基本的了解会很有帮助。

Laravel面纱:用于构建Web应用程序的跨平台PHP框架

MVC 图(来源:维基百科)

PHP 框架采用模型-视图-控制器 (MVC) 架构。对于那些不熟悉 MVC 架构的人来说,模型是应用程序的数据和所有关联的逻辑。例如,订户表可以是模板。视图提供了与用户查看和编辑模型数据的交互点。控制器是视图和模型之间的通道。换句话说,控制器接受用户的请求,从模型中检索必要的信息,对其进行处理并将其返回到视图。

PHP 应用程序(例如 WordPress)存在一些已知漏洞。最值得注意的例子是代码注入和 SQL 注入。 Laravel 包含有助于防止 SQL 注入和其他攻击的功能。

但是,开发人员应该付出额外的努力,例如渗透测试,以确保其应用程序的安全性。 Cloud Defense 的 IT 专家 Barbara Ericson 表示,Web 应用程序安全包括渗透测试和 Web 应用程序防火墙,两者是相辅相成的。

渗透测试旨在由合格的网络安全专业人员执行更复杂的测试,他们试图在事先不了解系统开发情况的情况下闯入您的系统,以查找未修补的安全漏洞。

为什么要使用Laravel?

回答完“什么Laravel?”后,下一个问题是“为什么Laravel?” Laravel 提供了许多强大的工具来促进、加速 Web 应用程序开发过程以及最终的应用程序。程序代码库结构良好且易于维护。

Laravel的一些特殊优点是:

Laravel很容易学习

Laravel相对容易学习,有合适的背景。Laravel 需要对 PHP 和面向对象编程 (OOP) 概念有总体了解才能有效使用。至少了解一些 HTML 也很有用。与任何 MVC 架构一样,了解关系数据库管理系统(例如 MySQL 或 PostgreSQL)也很有帮助。

Laravel 简化开发流程

Laravel 从一开始就旨在简化各种 Web 开发项目中的常见任务,例如路由、身份验证、迁移、缓存等。 Laravel 使用直观且明显的命令行界面和 Composer,可以轻松地将现成的模块集成到应用程序中。

Laravel 还收集了大量在线文档,对于经验丰富的开发人员来说,这是一个很好的起点。还提供适合所有技能水平的各种在线学习资源。

Laravel 为所有技能水平的开发人员提供工具

Laravel 将自己描述为一个渐进式框架,这意味着它包含各种功能,所有技能水平的用户都将从中受益。例如,初学者可以使用入门包来实现基本身份验证功能等模块。下面将更详细地讨论其中的许多工具。

Laravel面纱:用于构建Web应用程序的跨平台PHP框架

Laravel 项目结构(来源:ITSolutionStuff.com)

更有经验的用户可以利用入门套件背后的引擎来构建自己的身份验证流程并将其集成到他们选择的用户界面中。

Laravel 轻松扩展

Laravel 具有高度可扩展性。由于快速、分散的缓存系统的集成支持,Laravel 应用程序每月可以处理数百万个请求。Laravel还提供了 Vapor,这是一个基于 AWS 的无服务器部署平台,具有高可扩展性。

Laravel 拥有庞大的生态系统和社区

Laravel 拥有由大型开发者社区支持的庞大生态系统。由于Laravel是使用最广泛的PHP框架之一,因此Laravel应用程序和包的可用库非常丰富。Laravel官方包和第三方包均已准备就绪。

Laravel的官方软件包(其中许多内容将在下面讨论)包括身份验证、服务器管理、订阅计费、浏览器测试和自动化等等。有几个网站提供第三方软件包,包括 Packalyst 和 Laravel News。

Laravel的开发者社区还提供了丰富的信息。有疑问的开发者一定可以通过访问 Laravel 的众多论坛之一找到答案,包括 Laravel.io、The Laravel subreddit 和 Laracasts。

Laravel 应用广泛

许多公司使用 Laravel 来构建功能强大的网站:

Vacations by Rail 是一个使用 Laravel PHP 框架构建的火车旅行规划网站。它还与 Softrip 的预订引擎集成。

Laravel面纱:用于构建Web应用程序的跨平台PHP框架

Vacations by Rail 在后端使用 Laravel

某些 Mac 和 iOS 应用程序的 Setapp 网站也是使用 Laravel PHP 框架构建的。

Laravel面纱:用于构建Web应用程序的跨平台PHP框架

SetApp 由 Laravel 构建

Restaurants.com 的餐厅搜索应用程序使用起来非常直观,因为它是使用 Laravel 的移动应用程序模型构建的。

Laravel面纱:用于构建Web应用程序的跨平台PHP框架

Restaurant.com 由Laravel运营

Laravel在做什么?

Laravel的一系列特征太过庞大,无法在本简短概述中完全涵盖。一些更重要的功能包括:

路线管理

Laravel 通过使用简单的名称而不是长路径名称来识别路线,提供简单直观的路线处理。使用路由标识符还使应用程序的维护变得更加容易,因为路由名称可以在一处更改,而不是在整个过程中更改。 Laravel 应用程序的所有 Web 界面路由都注册在 paths/web.php 文件中。

安全

Laravel 包含许多安全功能,包括用户身份验证、用户角色授权、电子邮件验证、加密服务、密码哈希和密码恢复功能。

迁移

Laravel 使用迁移来对应用程序数据库进行版本控制。迁移会跟踪数据库随时间的修改情况,从而在需要时更轻松地销毁或重新创建数据库。

模板

Blade 是 Laravel 的 PHP 模板引擎。 PHP 模板引擎有助于将业务逻辑与 HTML 模板分开,这使得维护代码库变得更加容易。 Laravel 的许多功能都是基于 Blade 模型。 Blade 比其他模板引擎提供更多功能,因为 Blade 允许使用普通 PHP 代码,而其他模板引擎则不允许。

会话

Laravel 使用会话来跨多个请求存储有关用户的信息。 Cookie 是Laravel内置会话控制器的一个示例。

信息确认

Laravel可以轻松确认传入的用户信息。 Laravel 包含许多带有自定义错误消息的数据验证规则。

缓存处理

Laravel 支持数据缓存,以最大限度地减少应用程序任务处理时间。 Laravel 的缓存 API 支持多种第三方缓存后端,例如 Memcached 和 Redis。

错误处理

启动新的 Laravel 项目时会自动配置错误处理。Laravel 应用程序可以在调试模式下运行,该模式会针对发生的任何错误生成详细的错误消息。

测试

Laravel提供了大量现成的测试数据。 Laravel 支持单元测试(可以测试小型独立的应用程序代码)和功能测试(可以测试较大的代码和更高级别的功能)。

存储和文件管理

Laravel 使用 Flysystem PHP 包提供处理各种文件系统的控件,从本地文件系统到基于云的存储(例如 Amazon S3)。Laravel还使用 SSH 文件传输协议 (SFTP) 提供文件传输。

Sähköposti(电子邮件)

Laravel 包含基于 SwiftMailer 库的电子邮件 API,允许通过选定的服务发送电子邮件。 Laravel 支持电子邮件附件和电子邮件队列。

通知

Laravel 支持通过多种渠道发送通知,无论是使用 SMS 或 Slack 等知名渠道,还是 Laravel 社区开发的渠道。

Laravel是如何工作的?

为了更好地了解Laravel能做什么,了解Laravel如何处理请求(即请求的生命周期)非常重要。如上所述,Laravel基于MVC架构,响应用户请求。控制器使用这些请求来检索和处理模型中的数据,并将数据在视图中呈现给用户。

请求通过 public/index.php 文件到达 Laravel 应用程序,该文件加载框架的其余部分并检索 Laravel 应用程序实例。检索应用程序实例后,请求将路由到控制台核心或 HTTP 核心。

除其他任务外,内核定义了一系列启动程序,这些启动程序执行在处理请求之前必须完成的任务,并定义了请求在处理之前必须经过的中间件。这些预处理任务包括加载应用程序所需的服务提供者。

当启动完成并且服务提供者注册后,请求将转发到路由器,然后路由器将请求定向到路由或控制器。此外,路由器使用所有必需的特定于路由的中间件。请求通过所有必需的中间件后,路由或控制器方法的执行将返回响应,该响应通过链传回视图。

如何与Laravel开始?

开始使用Laravel需要了解Laravel最重要的结构和功能。

服务容器

服务容器是Laravel的核心组件之一。服务容器管理类依赖关系和依赖关系传播。

Laravel面纱:用于构建Web应用程序的跨平台PHP框架

Laravel 服务容器(来源:Christopher Rumpel)

服务容器是开发人员捆绑运行 Laravel 应用程序所需的所有内容的地方。

服务提供者

同样重要的是 Laravel 服务提供者,它们将类和依赖项提供到服务容器中。

Frontpages

Frontpage 是绑定到服务容器的类的静态用户界面。外观通过提供易于记忆的语法作为长类名的代理,使其更易于使用。

Packages

Packages 是为 Laravel 添加功能的一种方式。有独立的包和特定于应用程序的包。服务提供商告诉Laravel包资源的下载位置。

Laravel 与许多其他本地开发工具一样,依赖于 Docker。 Docker 是一种基于容器的工具,可让开发人员更轻松地创建和部署应用程序。使用 Docker 容器,开发人员将应用程序及其依赖项打包,并将它们部署为单个包。

命令行界面

Laravel 包含一组命令行界面 (CLI)。 Artisan 控制台包含的命令可帮助开发人员快速构建框架代码、简化和自动化重复任务,并更轻松地完成应用程序构建。 Sail 是 Laravel 8 中引入的轻量级命令行界面。 Sail 允许开发人员与Laravel的默认开发环境 Docker 进行交互。

Laravel面纱:用于构建Web应用程序的跨平台PHP框架

Laravel Artisan CLI(来源:tutorialspoint.com)

Eloquent

Eloquent 是一个对象关系映射器 (ORM),可轻松与数据库交互。使用 MVC 架构,模型对应于数据库中的各个表。使用 Eloquent,开发人员可以确保快速搜索、简单插入和更新以及直观的关系定义。

Composer

Composer 是第三方应用程序级 PHP 依赖管理工具。 Composer 管理 Laravel 应用程序所需的库、模块和插件。

Homestead

Laravel Homestead 是一个开发环境,通过提供预打包的 Vagrant 盒子来支持虚拟机开发。 Homestead 包含开发 Laravel 应用程序所需的一切,包括 PHP、MySQL、Nginx、Composer、Redis 等,因此开发人员无需在本地计算机上安装这些软件包。 Homestead 需要安装 Vagrant 和 VirtualBox 或 Parallels。

身份验证入门套件

Laravel 包含许多可帮助开发人员快速入门的软件包。在深入研究之前,您可能需要查看一些可用于了解Laravel的资源。 Laravel 包含多个入门套件,可帮助开发人员快速实现常用功能。

Laravel Breeze 是用于身份验证的入门套件。它包括常见的身份验证和用户帐户功能,例如用户注册、登录、电子邮件验证、密码验证和重置。 Breeze 还包含一个通过 Vue 的 javascript 接口。 Breeze 包括使用 Blade 模板和 Tailwind CSS 的默认视图。

对于更高级的身份验证功能,Laravel 现在提供了 Jetstream,该功能首次在版本 8 中引入。除了 Breeze 功能外,Jetstream 还提供其他功能,例如双因素身份验证、会话管理、通过 Laravel Sanctum 提供的 API 支持。和可选的团队管理。

对于想要使用自己的身份验证接口的开发人员,Laravel 提供了 Fortify - 一个与接口无关的身份验证后端。 Fortify 是 Jetstream 身份验证入门套件背后的引擎,包含 Laravel 的所有身份验证功能(例如用户注册、登录、电子邮件验证、双因素身份验证等)。 Fortify 并不是 Laravel Breeze 背后的引擎。

Laravel 还通过 Laravel Socialite 提供基于社交媒体 (OAuth) 的身份验证。

Laravel 为想要以最少的服务器配置甚至根本没有服务器来部署应用程序的开发人员提供 Forge 和 Vapor。 Forge 能够以最少的配置工作跨多个基础设施提供商进行部署。 Vapor 是一个基于 AWS 的无服务器部署平台。

对于那些想要采取下一步的人,开发人员可以通过他们自己的托管网站部署他们的 Laravel 应用程序。这是因为自托管网站需要您使用单个 PHP 命令(使用最新版本)和与服务器的 SSH 连接来配置多个已配置的数据库。 Laravel 在开源 PHP 框架中提供了这两种功能,而且作为额外的好处,它很容易安装。

Laravel还能做什么?

更好的问题可能是:“Laravel不能做什么?” 存在数以千计的包来实现任意数量的功能。一些更有趣的 Laravel 官方软件包包括:

Cashier 和 Spark

Laravel Cashier 提供了 Stripe 和 Paddle 订阅发票服务的接口。结帐还提供高级订购功能,例如优惠券和取消延期。

Cashier 是 Laravel Spark 发票仪表板引擎,允许用户创建和管理订单。 Spark也仅限于Stripe和Paddle作为支付提供商;自定义提供程序尚不与 Spark 兼容。然而,Spark 允许开发人员选择他们的接口。

Valet

Laravel Valet 是一个 macOS 开发环境,专注于速度和低资源使用(约 7MB RAM)。 Valet 并不打算完全取代 Sail 或 Homestead。相反,它适用于有特殊需求和资源限制的用户。

如果您想要更多包,请查看 Packalyst 网站或 Packalyst。

2022 年的Laravel

Laravel的当前版本是版本 9,最初于 2020 年 9 月发布。该版本包含许多新功能和改进。版本 8 中的一些新功能包括 Laravel Jetstream、批处理作业(允许您运行一堆作业,然后执行指定的操作)、Dynamic Blade 组件(允许根据运行时值渲染运行时组件)以及 Tailwind 对默认侧边栏 CSS 等。此外还针对速率限制和维护模式进行了改进。

请注意,Laravel每年 9 月都会发布新的主要版本,并根据需要发布辅助版本。

总结

寻求快速、轻松的 Web 应用程序开发的开发人员应该考虑学习 Laravel。Laravel提供了广泛而强大的资源,无需从头开始编写许多常见任务,从而简化了开发过程。

Laravel 还提供安全的虚拟开发环境和直观的命令行界面。由于 Laravel 易于学习,并且拥有强大的支持社区和生态系统,因此它是许多开发人员的自然选择,无论他们是初学者还是拥有多年经验的专家。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门