경고를 방지하는 방법: PhpStorm/Lumen에서 call_user_func를 올바르게 표시할 때 해당 'try' 블록에서 예외를 발생시켜야 합니까?
P粉009186469
P粉009186469 2023-09-03 22:55:00
0
1
497
<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粉009186469
P粉009186469

모든 응답(1)
P粉805535434

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

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

으아악

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿