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

相关推荐
4SAPI11 小时前
企业大模型API服务商推荐:从多模型接入到AI API Gateway的技术选型分析
人工智能·php
子非鱼a16 小时前
【WEB】[NewStarCTF 2023 公开赛道]include 0。0
php
DevUp17 小时前
停更老站往哪搬:PHP 老站的五条出路(番外七)
php·cms
专业程序开发源20 小时前
springboot旅游推荐系统82074-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·php·课程设计·旅游
sbjdhjd1 天前
从“删除后重生”到认证绕过:PHP 常驻内存实验与 Cacti remote_agent 命令执行链路复盘
安全·web安全·网络安全·数据挖掘·php·网络攻击模型·安全架构
JaguarJack1 天前
PHP 8.6 只是个小版本,三十项弃用却已在为 PHP 9.0 铺路
后端·php·服务端
BingoGo1 天前
PHP 8.6 只是个小版本,三十项弃用却已在为 PHP 9.0 铺路
后端·php
catchadmin2 天前
Whim 是什么?一门把 PHP 被否决的设想真跑起来的实验语言
php
ID34610744202 天前
【课程设计】基于Spring Boot+Vue的游戏账号租赁系统的设计与实现-计算机毕设 附源码50345
javascript·vue.js·spring boot·python·node.js·php·课程设计
PHP实战开发录2 天前
PHP接口偶发变慢怎么查
前端·php·开发