Laravel 10.x重磅更新:全新特性速览

好的,Laravel 10.x 版本引入了多项重要更新和增强功能。以下是一些主要的新特性:

  1. 最低 PHP 要求提升:

    • Laravel 10 要求的最低 PHP 版本是 PHP 8.1。开发者需要确保运行环境满足此要求。
  2. 新的测试框架支持:

    • Laravel 10 引入了对 PHPUnit 10 的支持。这是一个重要的测试框架更新。
    • 更重要的是,Laravel 10 默认包含了 Pest 测试脚手架 。当使用 laravel new 创建新项目时,可以选择使用 Pest 作为默认的测试框架(通过 --pest 选项),或者后续通过 artisan test:pest 命令添加。Pest 提供了更简洁、表达力更强的测试语法。
  3. Artisan 命令增强:

    • --type 选项:make:controllermake:model 等 Artisan 命令新增了 --type 选项。这使得创建特定类型的资源更加明确和方便,例如:

      bash 复制代码
      php artisan make:controller UserController --type=singleton
      php artisan make:model User --type=resource
    • make:class 命令: 新增了一个 make:class 命令,用于快速生成标准的 PHP 类文件,简化了非 Eloquent 模型或控制器类的创建。

  4. 路由改进:

    • 路由绑定改进: 在路由中定义可选参数时(如 /{param?}),如果该参数未被提供,Laravel 现在会尝试绑定该参数为 null 值,而不是跳过绑定。这提高了路由参数绑定的可预测性。
  5. 进程交互:

    • Process::run() 增强: Laravel 的 Process Facade 的 run() 方法现在返回一个 Illuminate\Process\ProcessResult 对象。该对象提供了更丰富的方法来与运行的外部进程进行交互,例如:
      • output():获取进程的标准输出。
      • errorOutput():获取进程的错误输出。
      • throw():如果进程执行失败(非零退出码),则抛出异常。
      • successful():检查进程是否成功退出(退出码为0)。
      • 这使得在应用程序中处理外部命令的执行结果更加方便和强大。
  6. 文件存储升级:

    • Flysystem v3: Laravel 的文件存储系统升级到了 Flysystem 的第 3 个主要版本。这带来了性能提升和一些底层接口的变化。虽然大多数应用代码无需修改,但自定义文件存储适配器可能需要相应更新。
  7. 验证规则增强:

    • uniqueexists 规则支持指定连接: 现在可以在使用 unique:table,columnexists:table,column 验证规则时,通过第三个参数指定数据库连接名称:

      php 复制代码
      'email' => 'unique:mysql.users,email_address'
  8. 安全增强:

    • XSS 保护默认开启: Laravel 10 默认在所有 Blade 模板中启用了 xss 转义行为(相当于在所有模板顶部添加了 @verbatim)。这有助于防范跨站脚本攻击 (XSS)。如果确实需要输出原始 HTML,必须显式使用 {!! $variable !!} 语法。
  9. 弃用策略:

    • Laravel 10 明确列出了将在 Laravel 11 中被移除的功能。开发者应留意这些弃用警告,以便在升级前进行必要的代码调整。一些被标记为弃用的功能包括:
      • date Cast 的 serialize 方法。
      • Illuminate\Container\Container::bindIf()
      • Illuminate\Support\Traits\EnumeratesValues::unlessEmpty()::unlessNotEmpty()
      • Mail::alwaysToMail::alwaysReplyToMail::alwaysFrom 方法。
      • $dates Eloquent 属性(应使用 $casts)。
      • assertSent(Sync)assertNotSent(Sync) 邮件测试方法(应使用 assertSentSync / assertNotSentSync)。
  10. 原生类型声明:

    • 框架本身以及生成的骨架代码(如通过 Artisan 命令创建的控制器、中间件等)开始更广泛地使用 PHP 的原生类型声明(如 void, int, string, array 等返回值类型和参数类型)。这提高了代码的清晰度和可维护性。

这些特性共同提升了 Laravel 10 在性能、开发体验、安全性和现代化方面的表现。开发者升级时需注意 PHP 版本要求、测试框架的变化(Pest)、Flysystem 升级以及弃用功能的处理。

相关推荐
两个人的幸福2 天前
Windows 桌面应用自研 PHP 队列(下):完整代码与六大工程化优化
php
BingoGo4 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
JaguarJack4 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
用户3074596982074 天前
PHP 扩展——从入门到理解
php
鹏仔先生5 天前
拷贝漫画APP下载页PHP程序,后台带免费AI写作
php
云水一下5 天前
从零开始学 PHP 系列(一):PHP 的前世今生与开发环境搭建
开发语言·php
xingpanvip5 天前
星盘接口开发文档:本命盘接口指南
android·开发语言·css·php·lua
酉鬼女又兒6 天前
零基础入门计算机网络运输层:端到端通信核心作用、端口号分类规则、复用分用工作机制及UDP与TCP协议全方位对比详解
网络·网络协议·tcp/ip·计算机网络·考研·udp·php
dog2506 天前
不要再继续优化 TCP
网络协议·tcp/ip·php
Channing Lewis6 天前
PHP 解析 Excel 的那些坑:一次“行号错位”引发的数据丢失
开发语言·php·excel