[Laravel 뜯어보기] Request의 Route

호리·2021년 8월 21일
0

Laravel뜯어보기

목록 보기
1/1
post-thumbnail

저는 Laravel 오픈 카카오톡방에서 활동하고 있습니다.
그렇게 있다 보면 많은분들이 질문하시는 것과 답변해주시는 것을 볼 수가 있는데 라라벨 공식문서에는 나와있지 않은 기능들로 쉽게 해결할 수 있는 문제들이 많습니다. 그러한 부분들을 블로그에 조금씩 정리해볼려고 합니다.

질문

해결과정

해당 코드를 줄일 수 있는 방법을 알려달라는 질문이 있었는데 일단 라라벨 공식문서에서는 request()->routeIs() 메소드에 대해 설명이 이렇게 되어있다.

Laravel8.x requests#inspecting-the-request-path
The is method allows you to verify that the incoming request path matches a given pattern. You may use the * character as a wildcard when utilizing this method:

패턴에 맞춘다고 되어있으나 해당 예시와 설명만 봐서는 해당 이미지의 코드를 간결하게 할 방법이 보이지 않는다.

이럴때는 라라벨 소스코드를 보면 편하다.

request()의 소스코드

public function routeIs(...$patterns)
    {
        return $this->route() && $this->route()->named(...$patterns);
    }

보면 매개변수로 스프레드 연산자를 받고 있는 것을 알 수 있다.
그렇다면 여러개를 넣어주면 되지 않을까? 싶은데 테스트하기는 귀찮으니 한번더 named(...$patterns) 의 코드를 찾아보기로 하였다.

Illuminate\Routing\Route 의 코드

   public function named(...$patterns)
    {
        if (is_null($routeName = $this->getName())) {
            return false;
        }
        foreach ($patterns as $pattern) {
            if (Str::is($pattern, $routeName)) {
                return true;
            }
        }
        return false;
    }

해당 코드를 보면 $patterns의 패턴이 하나라도 일치하면 true 값을 반환할 것을 알 수 있다.

이를 통해 위의 코드는 routeIs('users','Users-Status') 와 같은 방식으로 사용하면 문제 없이 동작할 것으로 보인다.

profile
테스트와 자동화를 좋아하는 개발자입니다.

0개의 댓글