细说Laravel10新组件:Laravel Pennant

发布时间 - 2023-04-17 00:00:00    点击率:

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

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

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

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

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

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

public function boot(): void
{
    Feature::define('beta-testers', fn (User $user) => match (true) {
        $user->isBetaTester() => true, default => false,    
    });
}

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

class BetaTesters
{
    public function resolve(User $user): mixed
    {
        return match (true) {
            $user->isBetaTester() => true,
            default => false,
        };
    }
}

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

class PodcastController
{
    public function index(Request $request): Response
    {
        return Feature::when(NewApi::class,
            fn () => $this->resolveNewApiResponse($request),
            fn () => $this->resolveLegacyApiResponse($request),
        );
    }
}

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

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 路由。我们可以将其移动到更高的中间件层,以使其更简单。

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./link/c988c2dac3954436ac56147118fb5c73

译文地址:https://www./link/21d58309d158bcb0e3e70a3827221e7c


# laravel  # 软件包  # 您的  # 你可以  # 让我们  # 应用程序  # 我们可以  # 可以使用  # 这是  # 文档  # 有很多 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Python高阶函数应用_函数作为参数说明【指导】  黑客入侵网站服务器的常见手法有哪些?  Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?  如何快速生成橙子建站落地页链接?  Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程  再谈Python中的字符串与字符编码(推荐)  php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】  Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】  海南网站制作公司有哪些,海口网是哪家的?  php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】  Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】  如何在橙子建站中快速调整背景颜色?  Laravel如何实现一对一模型关联?(Eloquent示例)  Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控  高防服务器租用如何选择配置与防御等级?  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤  成都网站制作公司哪家好,四川省职工服务网是做什么用?  javascript中对象的定义、使用以及对象和原型链操作小结  Laravel模型关联查询教程_Laravel Eloquent一对多关联写法  详解Android中Activity的四大启动模式实验简述  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  Bootstrap CSS布局之列表  Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】  Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】  Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门  Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】  linux写shell需要注意的问题(必看)  Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】  Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】  js代码实现下拉菜单【推荐】  javascript中的数组方法有哪些_如何利用数组方法简化数据处理  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  如何快速生成高效建站系统源代码?  Android自定义控件实现温度旋转按钮效果  IOS倒计时设置UIButton标题title的抖动问题  百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏  西安专业网站制作公司有哪些,陕西省建行官方网站?  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  北京的网站制作公司有哪些,哪个视频网站最好?  网站图片在线制作软件,怎么在图片上做链接?  如何快速上传自定义模板至建站之星?  javascript日期怎么处理_如何格式化输出  简单实现Android文件上传  如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】  Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案  如何在腾讯云免费申请建站?  Laravel如何优化应用性能?(缓存和优化命令)