Po najnowszej aktualizacji PHP Intelephense, którą otrzymuję dzisiaj, intelephense wciąż wyświetla błąd dla niezdefiniowanego symbolu mojej trasy (i także innych klas), wcześniej nie ma takiego błędu i to mnie niepokoi.
Oto zrzut ekranu błędu:
A to jest mój kod:
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');
});
W rzeczywistości nie ma błędu w tym kodzie, ale intelifense ciągle wyświetla błąd, więc czy istnieje sposób, aby to naprawić?
php
laravel
visual-studio-code
Adrian Edy Pratama
źródło
źródło
api.php
, zapoznaj się z odpowiedzią @ user12483351 poniżej. To naprawiło to dla mnie. Jestem na Intelephese 1.3.6.Odpowiedzi:
Intelephense 1.3 dodaje niezdefiniowaną diagnostykę typu, funkcji, stałej, klasy, metody i właściwości, podczas gdy wcześniej w 1.2 była tylko niezdefiniowana diagnostyka zmiennych.
Niektóre frameworki są napisane w sposób zapewniający wygodne skróty dla użytkownika, ale utrudniają silnikom analizy statycznej wykrywanie symboli dostępnych w czasie wykonywania.
Generatory skrótów, takie jak https://github.com/barryvdh/laravel-ide-helper, pomagają wypełnić lukę tutaj, a użycie tego z Laravelem zajmie się wieloma fałszywymi diagnozami, zapewniając konkretne definicje symboli, które można łatwo wykryć.
Mimo to PHP jest bardzo elastycznym językiem i mogą istnieć inne przypadki fałszywych niezdefiniowanych symboli, w zależności od tego, jak napisany jest kod. Z tego powodu, od 1.3.3, intelephense ma opcje konfiguracji, aby włączyć / wyłączyć każdą kategorię niezdefiniowanego symbolu w celu dopasowania do obszaru roboczego i stylu kodowania.
Te opcje to:
intelephense.diagnostics.undefinedTypes
intelephense.diagnostics.undefinedFunctions
intelephense.diagnostics.undefinedConstants
intelephense.diagnostics.undefinedClassConstants
intelephense.diagnostics.undefinedMethods
intelephense.diagnostics.undefinedProperties
intelephense.diagnostics.undefinedVariables
Ustawienie wszystkich tych wartości na false
intelephense.diagnostics.undefinedVariables
spowoduje zachowanie wersji 1.2. Zobacz interfejs użytkownika ustawień VSCode i wyszukajintelephense
.źródło
auth()->user()
jako klasy \ App \ User, więc metoda wywołania wewnątrz \ App \ User fromauth()->user()
zostanie wykryta jako błąd. Właśnie dodałemuse Illuminate\Support\Facades\Route;
w swoich trasach, aby naprawić błąd niezdefiniowanej trasy symbolu.intelephense.diagnostics.undefinedMethods
iintelephense.diagnostics.undefinedType
działa.laravel-ide-helper
naprawiono ostrzeżenie. Dziękuję Ci!_ide_helper.php
zgodnie z sugestiami w dokumentach.Wersja 1.3.0 ma wadę IMO.
Powrót do wersji 1.2.3 rozwiązuje mój problem.
Jestem na
źródło
Nie musisz obniżać wersji, możesz:
Albo wyłącz niezdefiniowaną diagnostykę symboli w ustawieniach - „intelephense.diagnostics.undefinedSymbols”: false.
Lub użyj pomocnika ide, który dodaje odcinki do fasad laravel. Zobacz https://github.com/barryvdh/laravel-ide-helper
źródło
Ostrzeżenie Zniknęło po zaimportowaniu odpowiedniej przestrzeni nazw.
Wersja
źródło
laravel-ide-helper
konfiguracja jest.Route
, ale miałem ten sam błądAuth
, więc też dodałemuse Illuminate\Support\Facades\Auth;
. Problem rozwiązany.1.3.1 to naprawiło.
Po prostu zaktualizuj swoje rozszerzenie i powinieneś już iść
źródło
To rozwiązanie może ci pomóc, jeśli wiesz, że twoje problemy są ograniczone do elewacji i korzystasz z Laravel 5.5 lub nowszego.
Zainstaluj laravel-ide-helper
composer require --dev barryvdh/laravel-ide-helper
Dodaj tę instrukcję warunkową,
AppServiceProvider
aby zarejestrować klasę pomocnika.Następnie uruchom,
php artisan ide-helper:generate
aby wygenerować plik, który pomoże IDE zrozumieć Fasady. Musisz ponownie uruchomić program Visual Studio Code.Bibliografia
https://laracasts.com/series/how-to-be-awesome-in-phpstorm/episodes/16
https://github.com/barryvdh/laravel-ide-helper
źródło
Auth
po ponownym uruchomieniu kodu VS Code. Zrobiłem dokładnie kroki przedstawione w tej odpowiedzi. Po ponownym uruchomieniu kodu VS daj mu minutę lub dwie, a błędy powinny zostać usunięte.To jest naprawdę zestaw konfiguracji dla twojego edytora do zrozumienia Laravela.
Jeśli chcesz to wszystko skonfigurować ręcznie, oto repozytorium . Dotyczy to zarówno kodu VS, jak i PhpStorm.
Lub jeśli chcesz, możesz pobrać ten pakiet . (Stworzyłem) Zalecam, aby zainstalować go globalnie.
A potem po prostu biegnij
andylaravel setupIDE
. to wszystko skonfiguruje dla ciebie zgodnie z repozytorium pięści.źródło
Nie, błędy występują tylko po automatycznej aktualizacji rozszerzenia Intelephense.
Aby rozwiązać problem, możesz obniżyć go do poprzedniej wersji, klikając „Zainstaluj inną wersję” w rozszerzeniu Intelephense. Nie ma błędów w wersji 1.2.3.
źródło
Jeśli zobaczysz to natychmiast po dodaniu nowej klasy dostawcy, pamiętaj, aby uruchomić polecenie VScode (control-shift-P)
Index Workspace
źródło
Oto rozwiązane:
Otwórz ustawienia rozszerzenia:
Poszukaj zmiennej, którą chcesz zmienić, i odznacz ją / zaznacz
Zmienne, które należy wziąć pod uwagę to:
źródło
Ci woleliby, żeby to było proste, głupie; Jeśli wolisz pozbyć się powiadomień zamiast instalować pomocnika lub obniżyć wersję, po prostu wyłącz błąd w swoim pliku,
settings.json
dodając:źródło
1.3.3 to naprawiło. Po prostu zaktualizuj swoje rozszerzenie.
źródło
Miałem ten sam problem i wydawało się, że rozwiązałem ten problem.
a) Zaktualizowano do najnowszej wersji 1.3.5 i ponownie włączył wszystkie ustawienia diagnostyczne.
Nadal otrzymywałem wiadomości
b) Dodano folder dostawcy z bibliotekami zależnymi do obszaru roboczego
Wydaje się, że to rozwiązało problem.
źródło
laravel-ide-helper
Dla każdego, kto przechodzi przez te problemy i nie jest łatwo wyłączyć cały zestaw kontroli, istnieje sposób na przesłanie własnych niestandardowych podpisów do Intelephense (używam VSCode, ale powinien działać tak samo dla Visual Studio Code).
Skopiowano z komentarza repozytorium Intelephese (autor: @KapitanOczywisty):
https://github.com/bmewburn/vscode-intelephense/issues/892#issuecomment-565852100
W moim przypadku potrzebne dspec na
describe
,beforeEach
,it
..., aby nie być zaznaczony jako błędy, więc po prostu wliczone plik z podpisami/directories_and_paths/app/vendor/bin/dspec
w moich ustawieniach przestrzeni roboczej VSCode, który miał mi potrzebne deklaracje funkcji:źródło