细说Laravel10新组件:Laravel Pennant

本篇文章给大家带来了关于laravel的相关知识,其中主要跟大家介绍laravel 10的新组件:laravel pennant,有代码示例,感兴趣的朋友下面一起来看一下吧,希望对大家有帮助。

Laravel Pennant 是由 Laravel 团队创建的一个包,它将随 Laravel 10 一起提供,为您的应用程序提供功能标志。

功能标志使您能够自信地逐步推出新的应用程序功能、A/B 测试新的接口设计、补充基于主干的开发策略等等。

此软件包 是官方提供的一系列软件包中的最新成员,意味着我们现在拥有了一个构建良好且经过良好测试的包,为我们提供了一些强大的功能。

分解包的功能,我们可以了解这个包给我们提供了什么。

您可以简单的使用您的AppServiceProvider去创建新功能。如下所示:

1

2

3

4

5

6

public function boot(): void

{

    Feature::define('beta-testers', fn (User $user) => match (true) {

        $user->isBetaTester() => true, default => false,   

    });

}

这是在你的应用中定义功能的一种非常干净和简单的方式。但是,你也可以使用基于类的方法来实现功能:

1

2

3

4

5

6

7

8

9

10

class BetaTesters

{

    public function resolve(User $user): mixed

    {

        return match (true) {

            $user->isBetaTester() => true,

            default => false,

        };

    }

}

翻阅文档,我发现有很多可以使用的方式。让我们来看看文档中的一个示例,看看可以对它做些什么。

1

2

3

4

5

6

7

8

9

10

class PodcastController

{

    public function index(Request $request): Response

    {

        return Feature::when(NewApi::class,

            fn () => $this->resolveNewApiResponse($request),

            fn () => $this->resolveLegacyApiResponse($request),

        );

    }

}

继续看,这是一个有版本的 API - 你可以根据用户是否具有访问权限来控制请求的去向。让我们扩展一下这个例子。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

class PodcastController

{

    public function __construct(

        private readonly RedirectAction $action,

    ) {}

    public function index(Request $request): Response

    {

        return Feature::when(BetaTester::class,

            fn () => $this->action->handle('v2'),

            fn () => $this->action->handle('v1'),

        );

    }

}

我们可以根据用户是否是 Beta 测试人员,使用我们的操作重定向到正确的 API 路由。我们可以将其移动到更高的中间件层,以使其更简单。

1

2

3

4

5

6

7

8

9

10

11

12

13

class VersionMiddleware

{

    public function handle(Request $request, Closure $next): mixed

    {

        if (Feature::active('beta-tester')) {

            return new RedirectResponse(

                uri: 'generate the url here',

            );

        }

        return $next($request);

    }

}

正如你可以想象的那样,你可以用 此软件包 做什么只会受限于你的想象力。我迫不及待地想使用这个软件包,看看它能为我的应用程序添加哪些改进。

原文地址:PHP中文网

译文地址:PHP中文网

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值