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)。它为开发者提供了更强大、更类型安全、更易于测试的工具集。

相关推荐
咖啡の猫1 小时前
Redis命令-Hash命令
redis·php·哈希算法
会编程的土豆3 小时前
【从零学javase 第六天】网络编程(+多线程)
开发语言·网络·php
云云只是个程序马喽4 小时前
海外短剧系统开发:支持多语言多支付海外上架app
php
诗句藏于尽头7 小时前
PHP-GD库安装及验证码问题解决记录
开发语言·php
zhouping@7 小时前
polarctf2025秋
android·web安全·php
清空mega7 小时前
网络程序设计入门第一章:Web、JSP、Tomcat 到底是什么?
开发语言·网络·php
JaguarJack8 小时前
用 Laravel AI SDK 构建多智能体工作流
ai·laravel
全栈软件开发8 小时前
中小汽修门店汽修单管理系统PHP源码,数字化管理维修订单与客户信息
开发语言·php
BingoGo8 小时前
用 Laravel AI SDK 构建多智能体工作流
后端·php
云云只是个程序马喽9 小时前
海外短剧系统:重构全球短剧生态的技术引擎与商业价值
php