Rumah >rangka kerja php >Laravel >Penerangan terperinci tentang komponen baharu Laravel10: Laravel Pennant

Penerangan terperinci tentang komponen baharu Laravel10: Laravel Pennant

藏色散人
藏色散人ke hadapan
2023-04-17 14:20:081198semak imbas

Artikel ini membawakan anda pengetahuan yang berkaitan tentang Laravel terutamanya memperkenalkan kepada anda komponen baharu Laravel 10: Laravel Pennant Ada contoh kod yang berminat boleh lihat di bawah .

Laravel Pennant ialah pakej yang dicipta oleh pasukan Laravel yang akan dihantar dengan Laravel 10 untuk menyediakan bendera ciri untuk aplikasi anda.

Bendera ciri membolehkan anda menghapuskan ciri apl baharu dengan yakin, A/B menguji reka bentuk antara muka baharu, melengkapkan strategi pembangunan berasaskan trunk dan banyak lagi.

Pakej ini adalah yang terbaharu dalam siri pakej yang disediakan secara rasmi, bermakna kami kini mempunyai pakej yang dibina dengan baik dan teruji yang menyediakan kami dengan beberapa ciri yang berkuasa.

Memecahkan fungsi pakej, kita boleh memahami apa yang pakej ini sediakan kepada kita.

Anda boleh menggunakan AppServiceProvider anda untuk mencipta ciri baharu. Seperti ini:

public function boot(): void
{
    Feature::define('beta-testers', fn (User $user) => match (true) {
        $user->isBetaTester() => true, default => false,    
    });
}

Ini ialah cara yang sangat bersih dan mudah untuk menentukan fungsi dalam apl anda. Walau bagaimanapun, anda juga boleh menggunakan pendekatan berasaskan kelas untuk melaksanakan fungsi:

class BetaTesters
{
    public function resolve(User $user): mixed
    {
        return match (true) {
            $user->isBetaTester() => true,
            default => false,
        };
    }
}

Melihat melalui dokumen, saya nampak terdapat banyak cara ia boleh digunakan. Mari kita lihat contoh daripada dokumentasi dan lihat apa yang boleh dilakukan dengannya.

class PodcastController
{
    public function index(Request $request): Response
    {
        return Feature::when(NewApi::class,
            fn () => $this->resolveNewApiResponse($request),
            fn () => $this->resolveLegacyApiResponse($request),
        );
    }
}

Bergerak, ini adalah API versi - anda boleh mengawal ke mana permintaan pergi berdasarkan sama ada pengguna mempunyai akses. Mari kita kembangkan contoh ini.

class PodcastController
{
    public function __construct(
        private readonly RedirectAction $action,
    ) {}

    public function index(Request $request): Response
    {
        return Feature::when(BetaTester::class,
            fn () => $this->action->handle('v2'),
            fn () => $this->action->handle('v1'),
        );
    }
}

Kami boleh menggunakan tindakan kami untuk mengubah hala ke laluan API yang betul berdasarkan sama ada pengguna adalah penguji beta atau tidak. Kita boleh mengalihkannya ke lapisan middleware yang lebih tinggi untuk menjadikannya lebih mudah.

class VersionMiddleware
{
    public function handle(Request $request, Closure $next): mixed
    {
        if (Feature::active('beta-tester')) {
            return new RedirectResponse(
                uri: 'generate the url here',
            );
        }

        return $next($request);
    }
}

Seperti yang anda boleh bayangkan, perkara yang boleh anda lakukan dengan pakej ini hanya dihadkan oleh imaginasi anda. Saya tidak sabar untuk menggunakan pakej ini dan melihat peningkatan yang boleh ditambah pada aplikasi saya.

Alamat asal: https://www.php.cn/link/c988c2dac3954436ac56147118fb5c73

Alamat terjemahan: https://www.php .cn/link/21d58309d158bcb0e3e70a3827221e7c

Atas ialah kandungan terperinci Penerangan terperinci tentang komponen baharu Laravel10: Laravel Pennant. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:learnku.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam