>PHP 프레임워크 >Laravel >Laravel10 새 구성요소에 대한 자세한 설명: Laravel Pennant

Laravel10 새 구성요소에 대한 자세한 설명: Laravel Pennant

藏色散人
藏色散人앞으로
2023-04-17 14:20:081189검색

이 글은 Laravel 10의 새로운 구성요소인 Laravel Pennant를 주로 소개합니다. 관심 있는 친구들은 아래를 살펴보는 것이 도움이 될 것입니다.

Laravel Pennant는 애플리케이션에 기능 플래그를 제공하기 위해 Laravel 10과 함께 제공되는 Laravel 팀에서 만든 패키지입니다.

기능 플래그를 사용하면 새로운 앱 기능을 점진적으로 출시하고, 새로운 인터페이스 디자인을 A/B 테스트하고, 트렁크 기반 개발 전략을 보완하는 등의 작업을 수행할 수 있습니다.

이 패키지 는 공식적으로 사용 가능한 패키지 시리즈 중 최신 패키지입니다. 즉, 이제 훌륭한 기능을 제공하는 잘 구축되고 잘 테스트된 패키지를 갖게 되었습니다.

패키지의 기능을 분석하면 이 패키지가 우리에게 제공하는 것이 무엇인지 이해할 수 있습니다.

AppServiceProvider를 사용하여 새로운 기능을 만들 수 있습니다.

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

이것은 앱의 기능을 정의하는 매우 깔끔하고 간단한 방법입니다. 그러나 기능을 구현하기 위해 클래스 기반 접근 방식을 사용할 수도 있습니다.

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

문서를 살펴보니 이를 사용하는 방법이 여러 가지 있다는 것을 알았습니다. 문서의 예를 살펴보고 이를 사용하여 무엇을 할 수 있는지 살펴보겠습니다.

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

계속해서, 이것은 버전이 있는 API입니다. 사용자에게 액세스 권한이 있는지 여부에 따라 요청이 어디로 가는지 제어할 수 있습니다. 이 예를 확장해 보겠습니다.

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

우리는 사용자가 베타 테스터인지 아닌지에 따라 올바른 API 경로로 리디렉션하는 작업을 사용할 수 있습니다. 더 간단하게 만들기 위해 더 높은 미들웨어 계층으로 이동할 수 있습니다.

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

상상할 수 있듯이 이 패키지로 할 수 있는 일은 상상력에 따라 제한됩니다. 이 패키지를 사용하여 내 애플리케이션에 어떤 개선 사항을 추가할 수 있는지 보고 싶습니다.

원본 주소:https://www.php.cn/link/c988c2dac3954436ac56147118fb5c73

번역 주소:https://www.php.cn/link/21d58309d158bcb0e3e70a3827221e 7c

위 내용은 Laravel10 새 구성요소에 대한 자세한 설명: Laravel Pennant의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 learnku.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제