Maison  >  Article  >  cadre php  >  Décrire en détail le nouveau composant de Laravel10 : Laravel Pennant

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

藏色散人
藏色散人avant
2023-04-17 14:20:081133parcourir

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

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

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

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

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

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer