찾다

 >  Q&A  >  본문

경고를 방지하는 방법: PhpStorm/Lumen에서 call_user_func를 올바르게 표시할 때 해당 'try' 블록에서 예외를 발생시켜야 합니까?

<p>Lumen 애플리케이션에는 다음과 같은 인증 미들웨어가 있습니다.</p> <pre class="brush:php;toolbar:false;">class 인증 { 공용 함수 핸들(요청 $request, 클로저 $next, 문자열|null $guard = null): 혼합 { 노력하다 { /**@var IlluminateAuthRequestGuard $requestGuard*/ $requestGuard = $this->auth->guard($guard); $signedIn = $requestGuard->check(); // ... } 잡기(NoUserIdProvidedException) { // ... } // ... } }</pre> <p>잘 작동하지만 PhpStorm에서는 예외(예제에서 대부분을 제거했으며 몇 개 있음)가 포함 블록에서 발생하더라도 발생하지 않는다고 보고합니다. </p> <p>RequestGuard 내부에서는 call_user_func를 사용하는 것 같습니다</p> <pre class="brush:php;toolbar:false;">return $this->user = call_user_func( $this->콜백, $this->요청, $this->getProvider() );</pre> <p>사용자 정의 보안 클래스의 미들웨어 메소드를 사용하는 AuthServiceProvider에 있는 클로저 세트를 호출합니다. </p> <pre class="brush:php;toolbar:false;">class AuthServiceProvider는 ServiceProvider를 확장합니다. { 공개 함수 boot(): 무효 { $this->app['auth']->viaRequest('api', function ($request) { $보안 = 새로운 보안(); $security->미들웨어($request)를 반환합니다. }); } }</pre> <p>제 생각에는 미들웨어에 대한 문서 블록이 정확하다고 생각합니다</p> <pre class="brush:php;toolbar:false;">/*** @param 요청 $request * @return 부울|객체|널 * @throws InvalidDomainUser * @NoDomainUserException 발생 * @NoTokenOnRecordException 발생 * @NoTokenProvidedException 발생 * @NoUserException 발생 * @NoUserIdProvidedException 발생*/ 공용 함수 미들웨어($request 요청): object|bool|null {</pre> <p>문서 블록을 추가하세요. 예: </p> <pre class="brush:php;toolbar:false;">/*** @NoUserIdProvidedException 발생*/</pre> <p>클로저에서 인증 제공자 또는 처리 코드가 경고를 사라지게 하지 않습니다. 거짓 긍정을 피하기 위해 코드에 주석을 달거나 힌트를 입력할 수 있는 방법이 있습니까? 나는 검사를 끄고 싶지 않습니다. </p>
P粉009186469P粉009186469457일 전499

모든 응답(1)나는 대답할 것이다

  • P粉805535434

    P粉8055354342023-09-04 21:30:05

    가드의 작동 방식은 정적 분석에 비해 너무 복잡해 보였기 때문에 기본 사용자 정의 코드를 가드에서 미들웨어로 직접 옮기도록 리팩토링했는데, 작동하고 이제 예외가 올바르게 감지됩니다. 으아악

    보안 클래스는 사용자 정의 논리입니다. @throws가 포함된 문서 블록이 IDE에서 찾을 수 있을 만큼 가깝다는 것이 중요합니다

    으아악

    회신하다
    0
  • 취소회신하다