新版特性


版本控制方案

Laravel 及其官方包遵循语义化版本控制。框架的主要版本每年发布一次(大约在第一季度),而较小和补丁版本可能每周都会发布。较小和补丁版本不应包含破坏性更改。

当从应用程序或包中引用 Laravel 框架或其组件时,应始终使用版本约束(如 ^10.0),因为 Laravel 的主要版本确实包含破坏性更改。但是,我们努力确保您可以在一天内更新到新的主要版本。

命名参数

命名参数不在 Laravel 的向后兼容性指南范围之内。我们可能会在必要时重命名函数参数,以改善 Laravel 代码库。因此,调用 Laravel 方法时使用命名参数应该谨慎,并理解参数名称可能会在未来更改。

支持政策

对于所有 Laravel 发布版本,提供 18 个月的漏洞修复和 2 年的安全修复。对于所有其他库,包括 Lumen,仅最新的主要版本会接收错误修复。此外,请查看 Laravel 支持的数据库版本

image-20230217182823975

Laravel 10

是 Laravel 框架的一个新版本。正如你所知,Laravel 在 Laravel 8 中转换到了每年一次的版本发布。以前,每六个月就会发布一个主要版本。这一转变旨在减轻社区的维护负担,并挑战我们的开发团队在不引入破坏性变化的情况下推出强大的新功能。因此,在不破坏向后兼容性的情况下,我们已经为 Laravel 9 提供了各种强大的功能。

因此,当前版本承诺推出出色的新功能,未来的“重大”发布将主要用于“维护”任务,例如升级上游依赖项,这可以在这些发布说明中看到。

Laravel 10 在 Laravel 9.x 中引入的改进基础上,通过向应用程序骨架方法以及用于生成框架中各种类的存根文件中引入参数和返回类型,继续完善。此外,引入了一个新的、开发人员友好的抽象层,用于启动和与外部进程交互。此外,Laravel Pennant 的引入提供了一种管理应用程序“功能标志”的出色方法。

PHP 8.1

Laravel 10.x 要求最低 PHP 版本为 8.1。

类型

在 Laravel 初始版本发布时,它利用了 PHP 当时可用的所有类型提示功能。但是,在随后的几年中,PHP 添加了许多新功能,包括额外的基本类型提示、返回类型和联合类型。

Laravel 10.x 彻底更新了框架使用的应用程序骨架和所有存根,以引入所有方法签名的参数和返回类型提示。此外,删除了多余的“doc block”类型提示信息:

<?php
 
namespace App\Http\Controllers;
 
use App\Models\Flight;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
 
class FlightController extends Controller
{
    /**
     * Display a listing of the resource.
     */
    public function index(): Response
    {
        //
    }
 
    /**
     * Display the specified resource.
     */
    public function show(Flight $flight): Response
    {
        //
    }
 
    // ...
 
}

这个改变是完全向后兼容现有应用程序的。因此,没有这些类型提示的现有应用程序将继续正常运行。

Laravel Pennant

它提供了一种轻量、简单的方法来管理应用程序的特性标志。Pennant 包括一个内存数组驱动和一个数据库驱动来存储特性标志。您可以通过 Feature::define() 方法轻松定义特性:

use Laravel\Pennant\Feature; 
use Illuminate\Support\Lottery;

Feature::define('new-onboarding-flow', function () { 
    return Lottery::odds(1, 10); 
});

一旦定义了特性,您可以轻松地确定当前用户是否有访问特定特性的权限:

if (Feature::active('new-onboarding-flow')) { 
    // ... 
}

当然,为了方便,Blade 指令也是可用的:

@feature('new-onboarding-flow') 
    <div> 
        <!-- ... --> 
    </div> 
@endfeature

Pennant 还提供了各种高级功能和 API。有关更多信息,请查阅全面的 Pennant 文档

进程交互

Laravel 10.x 通过新的 Process Facade 引入了一个美妙的抽象层,用于启动和与外部进程交互:

use Illuminate\Support\Facades\Process;

$result = Process::run('ls -la');

return $result->output();

进程甚至可以在池中启动,允许方便地执行和管理并发进程:

use Illuminate\Process\Pool;
use Illuminate\Support\Facades\Pool;
 
[$first, $second, $third] = Process::concurrently(function (Pool $pool) {
    $pool->command('cat first.txt');
    $pool->command('cat second.txt');
    $pool->command('cat third.txt');
});
 
return $first->output();

此外,进程可以模拟进行方便的测试:

Process::fake();
 
// ...
 
Process::assertRan('ls -la');

有关与进程交互的更多信息,请参阅详细的进程文档

测试分析

Artisan test 命令新增了 --profile 选项,可以轻松地查找应用程序中最耗时的测试:

php artisan test --profile

为方便起见,最耗时的测试将直接在 CLI 输出中显示:

img

Pest 脚手架

可以通过在使用 Laravel 安装程序创建新应用时提供 --pest 标志来默认启用 Pest 测试脚手架:

laravel new example-application --pest

生成器控制台提示

为了改善框架的开发人员体验,Laravel 的所有内置 make 命令现在不再需要任何输入。如果调用这些命令时没有输入,您将被提示提供所需的参数:

php artisan make:controller

Horizon / Telescope 外观改进

Horizon 和 Telescope 已更新,拥有全新、现代化的外观,包括改进的排版、间距和设计:

img


点赞 取消点赞 收藏 取消收藏

<< 上一篇: 目录索引

>> 下一篇: 升级指南