Feature flag позволяет выкатить код в production выключенным, а потом включить его для выбранной аудитории. Laravel Pennant — официальный пакет для этого, он хранит решения в базе данных.
composer require laravel/pennant
php artisan vendor:publish --provider="Laravel\Pennant\PennantServiceProvider"
php artisan migrateОпределение features
Feature — это имя и resolver: замыкание, которое решает значение для scope (по умолчанию это вошедший пользователь).
use App\Models\User;
use Illuminate\Support\Lottery;
use Laravel\Pennant\Feature;
public function boot(): void
{
Feature::define('new-checkout', fn (User $user) => match (true) {
$user->isInternalTeamMember() => true,
$user->isHighTrafficCustomer() => false,
default => Lottery::odds(1 / 10),
});
}