Laravel Pennant adalah package terbaru di Laravel 10 yang dikembangkan oleh tim inti Laravel. Laravel Pennant memberikan fitur flag yang memungkinkan kamu untuk mengaktifkan atau menonaktifkan fitur dalam aplikasi kamu.
Data fitur flag disimpan di dalam database dan dapat diakses baik di dalam blade maupun di dalam controller.
Instalasi Laravel Pennant sangatlah mudah, kamu dapat mengikuti langkah-langkah berikut:
composer require laravel/pennant
Jangan lupa untuk melakukan publish vendor dan migrasi setelah itu, karena ini akan menambahkan satu tabel baru yang diperlukan oleh Laravel Pennant:
php artisan vendor:publish --provider="Laravel\Pennant\PennantServiceProvider"
php artisan migrate
Kamu dapat mendefinisikan fitur-fitur yang ingin kamu gunakan di dalam AppServiceProvider. Sebagai contoh, kita akan membuat fitur untuk memeriksa apakah pengguna dapat mengakses dashboard beta atau tidak. Berikut adalah contoh implementasinya:
// AppServiceProvider.php
use Laravel\Pennant\Facades\Feature;
use App\Models\User;
public function boot(): void {
Feature::define('betaTester',
fn (User $user) => match (true) {
$user->isTester() => true,
default => false,
}
);
}
Pada model User, kamu perlu menambahkan sebuah method untuk menentukan apakah pengguna ini adalah seorang tester atau bukan. Berikut adalah contoh implementasinya:
// User.php
public function isTester(){
return $this->email === "tester@website.com";
}
Di dalam controller, kamu dapat menambahkan kode $user->feature->active('nama fitur')
untuk memeriksa apakah fitur tersebut aktif atau tidak. Berikut adalah contoh implementasinya:
// UserController.php
use App\Models\User;
use Laravel\Pennant\Facades\Feature;
public function index($id){
$user = User::find($id);
if ($user->features()->active('betaTester')) {
return "dashboard beta";
}
return "dashboard";
}
Terakhir, kamu dapat menambahkan rute baru untuk memeriksa fitur tersebut. Jika kamu memasukkan ID pengguna yang merupakan seorang tester, maka akan diarahkan ke dashboard beta. Jika tidak, maka akan diarahkan ke dashboard biasa. Berikut adalah contoh implementasinya di dalam web.php:
// web.php
use App\Http\Controllers\UserController;
use Illuminate\Support\Facades\Route;
Route::get('/check-user/{id}', [UserController::class,'index']);
Dengan menggunakan fitur flag yang disediakan oleh Laravel Pennant, kamu dapat dengan mudah menguji dan memperkenalkan fitur baru pada aplikasi kamu dengan lebih aman dan terkontrol.
Kamu juga dapat mengelola fitur-fitur tersebut dengan mudah, sehingga memudahkan kamu dalam mengelola dan memonitor fitur-fitur pada aplikasi kamu. Dengan Laravel Pennant, kamu dapat mengambil keputusan yang lebih baik berdasarkan fitur-fitur yang tersedia dalam aplikasi kamu, dan memberikan pengalaman yang lebih baik kepada pengguna kamu.