Heim > PHP-Framework > Laravel > Hauptteil

Detaillierte Beschreibung der neuen Komponente von Laravel10: Laravel Pennant

藏色散人
Freigeben: 2023-04-17 14:20:32
nach vorne
1156 Leute haben es durchsucht

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,    
    });
}
Nach dem Login kopieren

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,
        };
    }
}
Nach dem Login kopieren

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),
        );
    }
}
Nach dem Login kopieren

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'),
        );
    }
}
Nach dem Login kopieren

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);
    }
}
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:learnku.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage