Feature flag позволяет выкатить код в production выключенным, а потом включить его для выбранной аудитории. Laravel Pennant — официальный пакет для этого, он хранит решения в базе данных.

bash
composer require laravel/pennant
php artisan vendor:publish --provider="Laravel\Pennant\PennantServiceProvider"
php artisan migrate

Определение features

Feature — это имя и resolver: замыкание, которое решает значение для scope (по умолчанию это вошедший пользователь).

php
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),
    });
}
Как Pennant вычисляет feature
Как Pennant вычисляет feature