Heim  >  Artikel  >  PHP-Framework  >  Detaillierte Beschreibung der neuen Komponente von Laravel10: Laravel Pennant

Detaillierte Beschreibung der neuen Komponente von Laravel10: Laravel Pennant

藏色散人
藏色散人nach vorne
2023-04-17 14:20:081134Durchsuche

Dieser Artikel stellt Ihnen hauptsächlich die neue Komponente von Laravel 10 vor: Freunde, die interessiert sind, können einen Blick darauf werfen.

Laravel Pennant ist ein vom Laravel-Team erstelltes Paket, das mit Laravel 10 geliefert wird, um Funktionsflags für Ihre Anwendung bereitzustellen.

Mit Feature-Flags können Sie sicher schrittweise neue App-Funktionen einführen, neue Schnittstellendesigns A/B-Tests durchführen, Trunk-basierte Entwicklungsstrategien ergänzen und vieles mehr.

Dieses Paket ist das neueste einer Reihe offiziell verfügbarer Pakete, was bedeutet, dass wir jetzt über ein gut aufgebautes und getestetes Paket verfügen, das uns einige großartige Funktionen bietet.

Wenn wir die Funktionalität des Pakets aufschlüsseln, können wir verstehen, was dieses Paket uns bietet.

Sie können einfach Ihr AppServiceProvider verwenden, um neue Funktionen zu erstellen. So:

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

Dies ist eine sehr saubere und einfache Möglichkeit, Funktionalität in Ihrer App zu definieren. Sie können jedoch auch einen klassenbasierten Ansatz verwenden, um Funktionen zu implementieren:

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

Wenn ich mir die Dokumente ansehe, sehe ich, dass es viele Möglichkeiten gibt, sie zu verwenden. Schauen wir uns ein Beispiel aus der Dokumentation an und sehen, was wir damit machen können.

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

Dies ist eine versionierte API – Sie können steuern, wohin die Anfrage geht, je nachdem, ob der Benutzer Zugriff hat oder nicht. Lassen Sie uns dieses Beispiel näher erläutern.

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'),
        );
    }
}

Wir können unsere Aktionen nutzen, um auf die richtige API-Route umzuleiten, je nachdem, ob der Benutzer ein Betatester ist oder nicht. Wir können es auf eine höhere Middleware-Ebene verschieben, um es einfacher zu machen.

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);
    }
}

Wie Sie sich vorstellen können, sind den Möglichkeiten, die Sie mit diesem Paket machen können, nur durch Ihre Vorstellungskraft Grenzen gesetzt. Ich kann es kaum erwarten, dieses Paket zu verwenden und zu sehen, welche Verbesserungen es meiner Anwendung hinzufügen kann.

Originaladresse:https://www.php.cn/link/c988c2dac3954436ac56147118fb5c73

Übersetzungsadresse:https://www.php.cn/link/21d58309d158bcb0e3e70a3827221 7c

Das obige ist der detaillierte Inhalt vonDetaillierte Beschreibung der neuen Komponente von Laravel10: Laravel Pennant. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:learnku.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen