本篇文章给大家带来了关于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);
}
}
正如你可以想象的那样,你可以用 此软件包 做什么只会受限于你的想象力。我迫不及待地想使用这个软件包,看看它能为我的应用程序添加哪些改进。
原文地址:https://www.php.cn/link/c988c2dac3954436ac56147118fb5c73
译文地址:https://www.php.cn/link/21d58309d158bcb0e3e70a3827221e7c
以上就是细说Laravel10新组件:Laravel Pennant的详细内容,更多请关注php中文网其它相关文章!