Nach dem letzten Update von PHP Intelephense, das ich heute bekomme, zeigt das Intelephense immer wieder einen Fehler für ein undefiniertes Symbol für meine Route (und auch für andere Klassen) an. Es gibt keinen Fehler wie diesen zuvor und es stört mich.
Hier ist der Fehler-Screenshot:
Und das ist mein Code:
Route::group(['prefix' => 'user', 'namespace' => 'Membership', 'name' => 'user.'], function () {
Route::get('profile', 'ProfileController@show')->name('profile.show');
Route::patch('profile', 'ProfileController@update')->name('profile.update');
Route::patch('change-password', 'ChangePasswordController@change')->name('change-password');
Route::get('role', 'ProfileController@getRole')->name('profile.role');
Route::get('summary', 'SummaryController@show')->name('summary');
Route::get('reserved', 'AuctionController@reservedAuction')->name('reserved');
});
Eigentlich gibt es keinen Fehler in diesem Code, aber die Intelephense zeigt immer wieder einen Fehler an. Gibt es eine Möglichkeit, dies zu beheben?
php
laravel
visual-studio-code
Adrian Edy Pratama
quelle
quelle
api.php
angezeigt wird, lesen Sie die Antwort von @ user12483351 weiter unten. Das hat es für mich behoben. Ich bin auf Intelephese 1.3.6.Antworten:
Intelephense 1.3 fügte eine undefinierte Typ-, Funktions-, Konstanten-, Klassenkonstanten-, Methoden- und Eigenschaftsdiagnose hinzu, während es zuvor in 1.2 nur eine undefinierte Variablendiagnose gab.
Einige Frameworks sind so geschrieben, dass sie dem Benutzer bequeme Verknüpfungen bieten, es statischen Analyse-Engines jedoch erschweren, zur Laufzeit verfügbare Symbole zu erkennen.
Stub-Generatoren wie https://github.com/barryvdh/laravel-ide-helper helfen dabei, die Lücke hier zu schließen. Wenn Sie diese mit Laravel verwenden, werden viele der falschen Diagnosen behoben, indem konkrete Definitionen von Symbolen bereitgestellt werden, die leicht entdeckt werden können.
Dennoch ist PHP eine sehr flexible Sprache und es kann andere Fälle von falschen undefinierten Symbolen geben, abhängig davon, wie Code geschrieben wird. Aus diesem Grund verfügt Intelephense seit 1.3.3 über Konfigurationsoptionen zum Aktivieren / Deaktivieren jeder Kategorie undefinierter Symbole, um sie an den Arbeitsbereich und den Codierungsstil anzupassen.
Diese Optionen sind:
intelephense.diagnostics.undefinedTypes
intelephense.diagnostics.undefinedFunctions
intelephense.diagnostics.undefinedConstants
intelephense.diagnostics.undefinedClassConstants
intelephense.diagnostics.undefinedMethods
intelephense.diagnostics.undefinedProperties
intelephense.diagnostics.undefinedVariables
Wenn Sie alle diese Werte auf false setzen,
intelephense.diagnostics.undefinedVariables
wird das Verhalten von Version 1.2 angezeigt. Siehe die Benutzeroberfläche der VSCode-Einstellungen und suchen Sie nachintelephense
.quelle
auth()->user()
als Klasse \ App \ User erkennen kann. Daher wird das Aufrufen der Methode in \ App \ User vonauth()->user()
als Fehler erkannt. Ich habe geradeuse Illuminate\Support\Facades\Route;
meine Routen hinzugefügt , um einen undefinierten Symbolroutenfehler zu beheben.intelephense.diagnostics.undefinedMethods
undintelephense.diagnostics.undefinedType
funktioniert.laravel-ide-helper
Die Warnung wurde behoben. Vielen Dank!_ide_helper.php
wie in den Dokumenten vorgeschlagen.Version 1.3.0 hat IMO-Fehler.
Ein Downgrade auf Version 1.2.3 behebt mein Problem.
Ich bin dran
quelle
Sie müssen kein Downgrade durchführen, das Sie können:
Deaktivieren Sie entweder die Diagnose undefinierter Symbole in den Einstellungen - "intelephense.diagnostics.undefinedSymbols": false.
Oder verwenden Sie einen ide-Helfer, der Stummel für Laravel-Fassaden hinzufügt. Siehe https://github.com/barryvdh/laravel-ide-helper
quelle
Warnung Wird nach dem Importieren des entsprechenden Namespace nicht angezeigt.
Versionen
quelle
laravel-ide-helper
Konfiguration ist.Route
, aber ich hatte den gleichen Fehler fürAuth
, also fügte ich auch hinzuuse Illuminate\Support\Facades\Auth;
. Problem gelöst.1.3.1 hat es behoben.
Aktualisieren Sie einfach Ihre Erweiterung und Sie sollten bereit sein
quelle
Diese Lösung kann Ihnen helfen, wenn Sie wissen, dass Ihre Probleme auf Fassaden beschränkt sind und Sie Laravel 5.5 oder höher ausführen.
Installieren Sie den Laravel-Ide-Helfer
composer require --dev barryvdh/laravel-ide-helper
Fügen Sie diese bedingte Anweisung in Ihre hinzu
AppServiceProvider
, um die Hilfsklasse zu registrieren.Führen Sie
php artisan ide-helper:generate
dann eine Datei aus, um der IDE das Verständnis von Fassaden zu erleichtern. Sie müssen Visual Studio Code neu starten.Verweise
https://laracasts.com/series/how-to-be-awesome-in-phpstorm/episodes/16
https://github.com/barryvdh/laravel-ide-helper
quelle
Auth
nachdem ich VS Code neu gestartet hatte. Ich habe genau die in dieser Antwort gezeigten Schritte ausgeführt. Geben Sie VS Code nach dem Neustart ein oder zwei Minuten, und die Fehler sollten behoben sein.Dies ist wirklich eine Reihe von Konfigurationen, mit denen Ihr Editor Laravel verstehen kann.
Wenn Sie alles manuell konfigurieren möchten, finden Sie hier das Repo . Dies gilt sowohl für VS-Code als auch für PhpStorm.
Wenn Sie möchten, können Sie dieses Paket herunterladen . (Ich habe es erstellt) Es wird empfohlen, es global zu installieren.
Und dann einfach rennen
andylaravel setupIDE
. Dadurch wird alles für Sie gemäß dem Faust-Repo konfiguriert.quelle
Nein, die Fehler treten erst auf, nachdem die Intelephense-Erweiterung automatisch aktualisiert wurde.
Um das Problem zu lösen, können Sie ein Downgrade auf die vorherige Version durchführen, indem Sie in der Intelephense-Erweiterung auf "Andere Version installieren" klicken. Es gibt keine Fehler in Version 1.2.3.
quelle
Wenn dies unmittelbar nach dem Hinzufügen einer neuen Vendor-Klasse angezeigt wird, führen Sie unbedingt den Befehl VScode (control-shift-P) aus.
Index Workspace
quelle
Hier habe ich gelöst:
Öffnen Sie die Erweiterungseinstellungen:
Suchen Sie nach der Variablen, die Sie ändern möchten, und deaktivieren / deaktivieren Sie sie
Die Variablen, die Sie berücksichtigen sollten, sind:
quelle
Zu denen würde es vorziehen, es einfach, dumm zu halten; Wenn Sie die Hinweise lieber entfernen möchten, anstatt einen Helfer zu installieren oder ein Downgrade durchzuführen, deaktivieren Sie einfach den Fehler in Ihrem,
settings.json
indem Sie Folgendes hinzufügen:quelle
1.3.3 behoben. Aktualisieren Sie einfach Ihre Erweiterung.
quelle
Ich hatte das gleiche Problem und das Folgende schien das Problem angesprochen zu haben.
a) Auf die neueste Version 1.3.5 aktualisiert und alle Diagnoseeinstellungen wieder aktiviert.
Ich bekam immer noch die Nachrichten
b) Der Lieferantenordner mit den abhängigen Bibliotheken wurde zum Arbeitsbereich hinzugefügt
Dies scheint das Problem gelöst zu haben.
quelle
laravel-ide-helper
Für alle, die diese Probleme durchlaufen und sich nicht sicher sind, ob sie eine ganze Reihe von Überprüfungen deaktivieren möchten , gibt es eine Möglichkeit, Ihre eigenen benutzerdefinierten Signaturen an Intelephense zu übergeben (ich verwende VSCode, aber es sollte für Visual Studio Code genauso funktionieren).
Aus dem Kommentar von Intelephese Repo (von @KapitanOczywisty) kopiert:
https://github.com/bmewburn/vscode-intelephense/issues/892#issuecomment-565852100
In meinem Fall musste ich dspec ist
describe
,beforeEach
,it
... nicht als Fehler markiert zu tun, so dass ich eingeschlossen nur die Datei mit den Signaturen/directories_and_paths/app/vendor/bin/dspec
in meinen VSCode Arbeitsbereich Einstellungen, die die Funktionsdeklarationen hatten ich brauchte:quelle