Maison > cadre php > Laravel > le corps du texte

Décrire en détail le nouveau composant de Laravel10 : Laravel Pennant

藏色散人
Libérer: 2023-04-17 14:20:32
avant
1155 Les gens l'ont consulté

Cet article vous apporte des connaissances pertinentes sur Laravel. Il vous présente principalement le nouveau composant de Laravel 10 : Laravel Pennant. Il existe des exemples de code. Les amis intéressés peuvent y jeter un œil ci-dessous.

Laravel Pennant est un package créé par l'équipe Laravel qui sera livré avec Laravel 10 pour fournir des indicateurs de fonctionnalités pour votre application.

Les indicateurs de fonctionnalités vous permettent de déployer en toute confiance de nouvelles fonctionnalités d'application de manière incrémentielle, de tester A/B de nouvelles conceptions d'interface, de compléter des stratégies de développement basées sur des troncs, et bien plus encore.

Ce package est le dernier d'une série de packages officiellement disponibles, ce qui signifie que nous disposons désormais d'un package bien construit et bien testé qui nous offre d'excellentes fonctionnalités.

En décomposant les fonctionnalités du package, nous pouvons comprendre ce que ce package nous apporte.

Vous pouvez simplement utiliser votre AppServiceProvider pour créer de nouvelles fonctionnalités. Comme ceci :

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

C'est une manière très claire et simple de définir les fonctionnalités de votre application. Cependant, vous pouvez également utiliser une approche basée sur les classes pour implémenter des fonctionnalités :

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

En parcourant la documentation, je vois qu'il existe de nombreuses façons de l'utiliser. Jetons un coup d'œil à un exemple tiré de la documentation et voyons ce que l'on peut en faire.

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

Passons à autre chose, il s'agit d'une API versionnée - vous pouvez contrôler où va la requête en fonction du fait que l'utilisateur y a accès ou non. Développons cet exemple.

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'),
        );
    }
}
Copier après la connexion

Nous pouvons utiliser nos actions pour rediriger vers la bonne route API selon que l'utilisateur est un bêta-testeur ou non. Nous pouvons le déplacer vers une couche middleware supérieure pour le rendre plus simple.

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);
    }
}
Copier après la connexion

Comme vous pouvez l'imaginer, ce que vous pouvez faire avec ce forfait n'est limité que par votre imagination. J'ai hâte d'utiliser ce package et de voir quelles améliorations il peut apporter à mon application.

Adresse originale :https://www.php.cn/link/c988c2dac3954436ac56147118fb5c73

Adresse de traduction :https://www.php.cn/link/21d58309d158bcb0e3e70a3827221 e 7c

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:learnku.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal