laravel 10 官方功能开关工具是 pennant 而非 pantheon;需执行 composer require laravel/pennant、php artisan pennant:install 和 php artisan migrate 初始化;默认数据库驱动支持用户级动态判断,可通过 feature::for($user)->active() 等方法运行时控制,并在 blade 中用 @feature 指令渲染。

你提到的“Pantheon”可能是拼写误差。Laravel 10 官方功能开关(Feature Flags)工具是 Pennant,不是 Pantheon(Pantheon 是一个 PHP 应用托管平台,与 Laravel 功能开关无关)。
安装 Pennant 并启用基础功能开关
执行以下命令安装并初始化:
composer require laravel/pennant-
php artisan pennant:install(生成迁移文件) -
php artisan migrate(创建pennant_features表)
默认使用数据库驱动,状态持久化到表中,适合按用户、团队等动态判断场景。
定义功能开关逻辑
在 AppServiceProvider::boot() 中定义,或使用 Artisan 命令生成类:
-
php artisan make:feature NewDashboard→ 生成app/Features/NewDashboard.php - 在
resolve($notifiable)方法中编写启用条件,例如:return $notifiable->hasRole('admin') || $notifiable->id % 5 === 0;
这样可实现灰度发布,无需硬编码return true。
在代码中检查和控制开关
支持运行时动态干预,不依赖部署:
- 检查是否启用:
Feature::for($user)->active('new-dashboard') - 强制开启:
Feature::for($user)->activate('new-dashboard') - 临时关闭:
Feature::for($user)->deactivate('new-dashboard') - 恢复自动判断:
Feature::for($user)->forget('new-dashboard') - Blade 中使用:
@feature('new-dashboard') ... @endfeature
进阶配置选项
如需更高性能或特殊环境适配:
- 修改
config/pennant.php中的driver:支持'eloquent'(默认,支持作用域逻辑)、'redis'(高性能但不支持用户级条件判断)、'array'(仅测试用) - Redis 驱动需确保连接配置正确,且注意它无法执行
$user->id > 1000类动态逻辑,这类必须用 Eloquent 驱动











