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:controller、make: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. 验证规则增强:

    • unique 和 exists 规则支持指定连接: 现在可以在使用 unique:table,column 和 exists: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::alwaysTo、Mail::alwaysReplyTo 和 Mail::alwaysFrom 方法。
      • $dates Eloquent 属性(应使用 $casts)。
      • assertSent(Sync) 和 assertNotSent(Sync) 邮件测试方法(应使用 assertSentSync / assertNotSentSync)。
  10. 原生类型声明:

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

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

相关推荐
2501_944521596 小时前
Ramda 跨端三方库仓颉适配全流程
开发语言·javascript·flutter·php
漠月瑾-西安7 小时前
PHP曝出两个严重RCE漏洞:CVE-2026-109618、CVE-2026-109619技术分析与修复指南
网络安全·php·漏洞分析·漏洞修复·远程代码执行
大文说跨境13 小时前
亚马逊多店铺的图片素材怎么批量去重:EXIF 与哈希的处理流程
开发语言·php
上海运维Q先生14 小时前
PHP8.3.36升级修复手册----CVE-2026-109618 CVE-2026-109619
运维·php
2401_8858850414 小时前
芬兰语音通知接口怎样对接?语音提醒接入流程
android·前端·python·php·语音识别
Flynt17 小时前
PHP 9.2 分 RCE 的补丁比公告早公开 3 天,我读完 389 个文件的 diff,也把"死在代码之前"跑了出来
安全·php·源码
萌动的小火苗18 小时前
MQTT的QoS0、QoS1、QoS2有什么区别?
开发语言·网络·python·php·信息与通信
silvamux_18 小时前
10款模型写“君幸食”讲解词:统一事实档案与逐款审校
开发语言·php
Smoothcloud润云19 小时前
GPU远程纳管节点频繁离线?心跳、DNS与时钟排障实战
运维·服务器·开发语言·人工智能·php·gpu算力
ESDWAN19 小时前
企业访问海外系统很慢,如何一步步定位问题?
服务器·网络·php