用途:在 Laravel 应用中管理特性标志,支持按用户或团队作用域控制功能开关、A/B 测试变体与渐进式发布。
安装:composer require laravel/pennant,执行 php artisan vendor:publish --provider="Laravel\Pennant\PennantServiceProvider" 与 php artisan migrate。
主要能力:
- 定义特性:闭包式(简单布尔、按用户属性、Lottery::odds 渐进发布)或用 php artisan pennant:feature 生成类式特性。
- 检查:Feature::active / inactive、allAreActive、someAreActive、allAreInactive、someAreInactive,以及取富值 Feature::value / values。
- 作用域:默认当前认证用户,可 Feature::for($user) 或团队、null(访客)作用域。
- 富值 A/B 测试:闭包返回非布尔值(如 Lottery::odds(1,3)->choose(...)),Blade 中按变体渲染。
- 条件执行:Feature::when / unless。
- Blade 指令:@feature ... @else ... @endfeature。
- 中间件:EnsureFeaturesAreActive::using(...),并用 whenInactive 自定义未激活响应。
- 程序化管理:activate、activateForEveryone、deactivate、deactivateForEveryone、forget、purge。
- 预加载:Feature::for($user)->load([...]) 或 loadAll(),减少重复查询。
- 存储驱动:database(默认)或 array(测试/无状态场景),配置位于 config/pennant.php,可用 PENNANT_STORE 环境变量切换。
- 测试:Feature::activate()/deactivate() 保证确定性,用 array 驱动加速。
适用场景:功能灰度、Beta 访问控制、A/B 变体、按团队/用户差异化功能。
限制:资料未提供收费、价格与具体版本要求信息,暂无官方说明。