Laravel v10 发布

2023 年 2 月 13 日

今天,我们很高兴地宣布我们已标记 Laravel 10.0 版本!

Laravel 10 延续了 Laravel 9 中的改进,为所有应用程序骨架方法以及用于在整个框架中生成类的所有存根文件引入了参数和返回类型。此外,还引入了一个新的、对开发人员友好的抽象层,用于启动外部进程并与其交互。此外,还引入了 Laravel Pennant,以提供管理应用程序“功能标志”的绝佳方法。

要了解有关此版本的全部重要详细信息,请查看我们的官方发行说明升级指南。我们将在下面介绍一些亮点。

方法签名 + 返回类型

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

Laravel 10.x 彻底更新了应用程序骨架和框架使用的所有存根,为所有方法签名引入了参数和返回类型。此外,已删除无关的“文档块”类型提示信息

<?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

已发布一个新的第一方包 Laravel Pennant。Laravel Pennant 提供了一种轻量级、简化的方式来管理应用程序的功能标志。开箱即用,Pennant 包含一个内存中array驱动程序和一个用于持久功能存储的database驱动程序。

可以通过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外观引入了一个漂亮的抽象层,用于通过外部进程启动并与其交互

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');

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

Horizon / Telescope 改版

HorizonTelescope 已更新为焕然一新的现代外观,包括改进的字体排印、间距和设计

作者 Taylor Otwell

Laravel 创建者。

关注 RSS Feed