Laravel10.x重磅升级:新特性全解析

好的,Laravel 10.x 版本带来了一些重要的新特性和改进。以下是一些关键点:

  1. PHP 8.1 最低要求

    • Laravel 10 要求 PHP 8.1 或更高版本才能运行。这利用了 PHP 8.1 引入的新语言特性(如枚举、只读属性等)和性能提升。
  2. Laravel Pennant 包(官方发布)

    • Laravel Pennant 是一个新的、官方发布的包,用于管理应用程序的功能标志(Feature Flags)。
    • 它提供了一种轻量级的方法来逐步推出新功能、进行 A/B 测试或在特定条件下启用/禁用功能。
    • 支持多种存储驱动(如数据库、内存等)来保存功能状态。
  3. 新的测试工具链:Laravel Breeze 与 Pest 集成

    • Laravel 的入门套件 breeze 现在提供了使用 Pest PHP 测试框架作为默认测试套件的选项。
    • Pest 是一个现代化、简洁且功能强大的测试框架,旨在提供更好的开发者体验。
    • 运行 php artisan breeze:install --pest 即可创建一个使用 Pest 的项目脚手架。
  4. 本地类型声明

    • Laravel 10 中框架生成的骨架代码(如 Artisan 命令、控制器、测试等)开始包含本地类型声明(参数类型、返回类型)。

    • 这提高了代码的清晰度和可维护性,并利用了 PHP 的类型系统优势。

    • 例如:

      php 复制代码
      class CreateUser extends Command
      {
          // ...
          public function handle(): int // 返回类型声明
          {
              // ...
              return self::SUCCESS; // 使用常量
          }
      }
  5. make:controller 命令的 --singleton 选项

    • 在创建控制器时,可以使用新的 --singleton 选项来生成一个单例控制器。
    • 单例控制器在整个请求生命周期内只会被解析一次,这对于某些特定的场景(如持有状态)可能有用。
  6. make:model 命令的改进

    • make:model 命令现在支持同时生成模型、迁移、工厂、资源控制器等,通过组合标志如 -mfc(分别代表 Migration, Factory, Controller)来实现。
    • 例如:php artisan make:model Flight -mfc 会一次性生成模型、迁移、工厂和控制器文件。
  7. 路由 where 方法支持枚举参数

    • 在定义路由参数约束时,现在可以使用 PHP 枚举类型。

    • 例如:

      php 复制代码
      use App\Enums\PostStatus;
      Route::get('/posts/{status}', function (PostStatus $status) {
          // $status 将是 PostStatus 枚举实例
      })->where('status', PostStatus::class);
  8. dispatch() 函数支持调用对象

    • dispatch() 辅助函数现在可以直接接受一个可调用对象(Callable)作为参数。

    • 这提供了更灵活的方式来分发任务,无需先创建一个正式的 Job 类。

    • 例如:

      php 复制代码
      dispatch(function () {
          // 执行一些任务...
      });
  9. Process Facade 增强

    • Laravel 10 引入了新的 Process Facade,提供了更流畅、面向对象的 API 来与系统进程交互(执行 shell 命令)。

    • 它比直接使用 execshell_exec 更安全、更易用,并支持链式调用和丰富的功能(如超时、环境变量设置、输出处理等)。

    • 例如:

      php 复制代码
      use Illuminate\Support\Facades\Process;
      $result = Process::run('ls -la');
      if ($result->successful()) {
          echo $result->output();
      }
  10. 废弃项移除

    • 根据 Laravel 的版本支持政策,Laravel 10 移除了一些在之前版本中已被标记为废弃的功能和类。

总结: Laravel 10.x 聚焦于现代化(PHP 8.1+)、开发者体验(新的测试工具链、改进的命令行工具)、代码质量(类型声明)以及引入实用的新功能(Pennant, Process)。这些变化旨在让 Laravel 应用更健壮、更易开发维护。

请注意,以上是主要特性概述,更详细的变更和改进请参考 Laravel 10.x 的官方升级指南和发布说明。

相关推荐
BreezeDove14 分钟前
【Android】Flutter3.35项目启动超时问题
android·flutter
故渊at24 分钟前
第十四板块:Android 硬件抽象与安全加固 | 第三十四篇:Hardware Composer (HWC) 与 显示安全(HDCP)
android·安全·composer·安全加固·hwc·硬件抽象
KIO no way31 分钟前
AI内容编排是什么_聊聊CSDN_AI数字营销背后的分发逻辑
android·人工智能
故渊at38 分钟前
第十四板块:Android 硬件抽象与安全加固 | 第三十三篇:Verified Boot 与 硬件信任链(Trusty TEE)
android·安全·信任链·verified
Tangyuewei1 小时前
我用 AI 辅助开发了一个发型 App,然后打包成了 APK
android·人工智能·ai编程
程序课代表1 小时前
Android源码分析挖掘(二) fork大师zygote进程
android·zygote
帅次1 小时前
Android 16(API Level 36)Activity 启动流程源码级解析
android·framework·源码解析·activity启动流程·android 16
chian-ocean1 小时前
Microi吾码:从零到服装ERP:低代码打造企业级系统的实战之旅
android·低代码·rxjava
故渊at4 小时前
第十五板块:Android 系统调试与逆向工程 | 第三十五篇:ART 虚拟机内部机制与 OAT 文件格式
android·虚拟机·art·机器码·oat文件格式
alexhilton10 小时前
Android的Agent优先时代:构建时vs运行时
android·kotlin·android jetpack