So vermeiden Sie Warnungen: Stellen Sie beim korrekten Markieren von call_user_func in PhpStorm/Lumen sicher, dass eine Ausnahme im entsprechenden „try“-Block ausgelöst wird.
<p>Ich habe in meiner Lumen-Anwendung eine Authentifizierungs-Middleware wie diese: </p>
<pre class="brush:php;toolbar:false;">class Authentifizieren
{
öffentliches Funktionshandle(Request $request, Closure $next, string|null $guard = null): gemischt
{
versuchen {
/**@var IlluminateAuthRequestGuard $requestGuard*/
$requestGuard = $this->auth->guard($guard);
$signedIn = $requestGuard->check();
// ...
} Catch (NoUserIdProvidedException) {
// ...
}
// ...
}
}</pre>
<p>Es funktioniert gut, aber PhpStorm meldet, dass die Ausnahmen (ich habe die meisten davon aus dem Beispiel entfernt, es gibt ein paar) nicht vom enthaltenden Block ausgelöst werden, obwohl sie es sind. </p>
<p>Es scheint, dass es tief im Inneren von RequestGuard call_user_func</p> verwendet.
<pre class="brush:php;toolbar:false;">return $this->user = call_user_func(
$this->callback, $this->request, $this->getProvider()
);</pre>
<p>Rufen Sie den Abschlusssatz im AuthServiceProvider auf, der eine Middleware-Methode für die benutzerdefinierte Sicherheitsklasse verwendet: </p>
<pre class="brush:php;toolbar:false;">class AuthServiceProvider erweitert ServiceProvider
{
öffentliche Funktion boot(): void
{
$this->app['auth']->viaRequest('api', function ($request) {
$security = new Security();
return $security->middleware($request);
});
}
}</pre>
<p>Meiner Meinung nach ist der Dokumentationsblock für die Middleware korrekt</p>
<pre class="brush:php;toolbar:false;">/*** @param Request $request
* @return bool|object|null
* @throws InvalidDomainUser
* @throws NoDomainUserException
* @throws NoTokenOnRecordException
* @throws NoTokenProvidedException
* @throws NoUserException
* @throws NoUserIdProvidedException*/
öffentliche Funktions-Middleware (Request $request): object|bool|null
{</pre>
<p>Fügen Sie einen Dokumentblock hinzu, zum Beispiel: </p>
<pre class="brush:php;toolbar:false;">/*** @throws NoUserIdProvidedException*/</pre>
<p>Beim Abschluss führt der Authentifizierungsanbieter oder der Verarbeitungscode nicht dazu, dass die Warnung verschwindet. Gibt es eine Möglichkeit, den Code zu kommentieren oder einen Tipp einzugeben, um Fehlalarme zu vermeiden? Ich möchte die Inspektion nicht einfach abschalten. </p>