Laravel 10.X 新特性全解析

好的,Laravel 10.X 版本引入了一些重要的新特性和改进。以下是其主要特性概述:

  1. 原生类型声明(Native Type Declarations)

    • 框架生成的骨架代码(如控制器、模型、中间件等)现在默认包含了参数和返回值的类型声明(如 string $name, : Response)。这提高了代码的可读性、可靠性和开发工具(如 IDE)的支持度。
    • 开发者可以选择是否在自己的应用代码中使用类型声明。
  2. process 交互功能(Process Interaction)

    • 新增了 Process Facade 和一个强大的底层实现,用于更简洁、更强大地执行外部系统命令并与进程交互。

    • 提供了流畅的 API 来定义命令、设置环境变量、工作目录、超时时间、输入内容,并断言预期的输出、错误输出和退出码。这使得测试涉及命令行工具的功能变得非常容易。

    • 示例代码片段:

      php 复制代码
      use Illuminate\Support\Facades\Process;
      $result = Process::run('ls -la')->output(); // 运行命令并获取输出
  3. 测试辅助工具强化(Enhanced Testing)

    • TestResponse 类新增了 assertStatusassertOkassertNotFound 等方法来简化 HTTP 状态码的断言。
    • 新增了 assertSessionHasErrors 的便捷写法,无需再指定错误数组键名。
    • 提供了更丰富的数据库测试断言方法。
  4. pest 脚手架(Pest Scaffolding)

    • 创建新项目时,可以通过 --pest 选项选择使用 Pest 测试框架作为默认的测试套件,替代 PHPUnit。
  5. 路由改进(Routing Improvements)

    • Route:redirect 方法现在支持传递 HTTP 状态码参数。
    • 新增了 Route:permanentRedirect 方法作为 301 重定向的快捷方式。
    • 路由缓存性能得到优化。
  6. where 链式方法(where Chainable Method)

    • Illuminate\Collections\Collection 集合类新增了 where 链式方法,允许在集合查询构建器风格的链式调用中轻松添加额外的 where 条件。
  7. string 辅助函数(str Helper Function)

    • 新增了一个全局辅助函数 str(),作为 Illuminate\Support\Str 门面的快捷方式,用于处理字符串操作(如生成 UUID、转换大小写、截取等)。例如:$slug = str('My Blog Post')->slug();
  8. 可调度任务的默认配置(Scheduled Task Defaults)

    • app/Console/Kernel.php 中,新增了 schedule 方法内的 schedule 函数,允许为所有后续定义的任务设置默认的配置(如时区、运行环境限制)。这避免了在每个任务上重复设置相同的选项。
  9. destroy 路由模型绑定(destroy Route Model Binding)

    • 隐式路由模型绑定现在也适用于 destroy 方法(通常用于删除资源)。以前,它主要应用于 show, edit, update 等方法。
  10. make:model 改进

    • make:model Artisan 命令增加了 --pivot 选项,用于快速生成数据透视表模型(Pivot Model)。
    • 新增了 --morph-pivot 选项用于生成多态数据透视表模型(Morph Pivot Model)。
  11. PHP 8.2 支持

    • Laravel 10 要求最低 PHP 版本为 8.1 ,并且完全兼容 PHP 8.2
  12. 弃用通知

    • 一些在 Laravel 9 中被标记为 deprecated 的功能在 Laravel 10 中被移除。开发者需要检查并更新代码以适应这些变化。
  13. 长期支持(LTS)

    • Laravel 10 是一个长期支持(LTS)版本,这意味着它将获得 2 年的错误修复 (直到 2025 年 2 月)和 3 年的安全修复(直到 2026 年 2 月)。这对于需要稳定性的项目非常重要。

总结来说,Laravel 10 着重于提升开发体验(类型声明、测试增强、process 功能)、现代化(PHP 8.1+ 要求)和稳定性(LTS)。它为开发者提供了更强大、更类型安全、更易于测试的工具集。

相关推荐
石榴树下的七彩鱼14 小时前
智能抠图 API 多语言接入实战:从零到上线的 Python / Java / PHP / JS 完整教程(附避坑指南)
java·python·php·智能抠图·api接入·石榴智能·shiliuai
XS03010616 小时前
Java 基础(九) IO流
java·开发语言·php
独隅16 小时前
此电脑网络位置异常的AD域排错指南
开发语言·php
niucloud-admin17 小时前
PHP SAAS 框架常见问题——怎么添加菜单,添加了菜单不出现怎么回事
php
niucloud-admin17 小时前
PHP SAAS 框架常见问题——本地调试提示输入站点 ID
php
niucloud-admin17 小时前
PHP SAAS 框架常见问题——小程序开发工具代码上传失败问题
php
码云数智-大飞17 小时前
TLS 1.3的革新:更快的速度与更强的安全性
开发语言·php
Johnstons17 小时前
网络诊断工具怎么选:从监控告警到抓包定位的完整方法论
服务器·网络·php·es·抓包分析·网络诊断工具选型与排障方法
aq553560018 小时前
GitSubmodule深度避坑指南
java·开发语言·php
bksczm19 小时前
Linux之基础开发工具(Ubuntu)之apt 、vim
linux·ubuntu·php