После последнего обновления PHP Intelephense, которое я получил сегодня, intelephense продолжает показывать ошибку для неопределенного символа для моего маршрута (и другого класса тоже), подобной ошибки раньше не было, и это беспокоит меня.
Вот скриншот ошибки:
И это мой код:
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');
});
На самом деле в этом коде нет ошибок, но intelephense продолжает показывать ошибку, так есть ли способ исправить это?
php
laravel
visual-studio-code
Адриан Эди Пратама
источник
источник
api.php
, см. Ответ @ user12483351 ниже. Это исправило это для меня. Я на Intelephese 1.3.6.Ответы:
В Intelephense 1.3 добавлена диагностика неопределенного типа, функции, константы, константы класса, метода и свойства, где ранее в 1.2 была диагностика только неопределенной переменной.
Некоторые структуры написаны таким образом, чтобы обеспечить удобные ярлыки для пользователя, но затрудняют для механизмов статического анализа обнаружение символов, доступных во время выполнения.
Генераторы заглушек, такие как https://github.com/barryvdh/laravel-ide-helper, помогут заполнить этот пробел, и использование этого с Laravel позаботится о многих ложных диагностиках, предоставляя конкретные определения символов, которые могут быть легко обнаружены.
Тем не менее, PHP является очень гибким языком, и могут быть другие случаи ложных неопределенных символов в зависимости от того, как написан код. По этой причине, начиная с 1.3.3, intelephense имеет параметры конфигурации, позволяющие включать / отключать каждую категорию неопределенного символа в соответствии с рабочим пространством и стилем кодирования.
Эти варианты:
intelephense.diagnostics.undefinedTypes
intelephense.diagnostics.undefinedFunctions
intelephense.diagnostics.undefinedConstants
intelephense.diagnostics.undefinedClassConstants
intelephense.diagnostics.undefinedMethods
intelephense.diagnostics.undefinedProperties
intelephense.diagnostics.undefinedVariables
Установка всех их в ложь, кроме
intelephense.diagnostics.undefinedVariables
, даст поведение версии 1.2. См. Пользовательский интерфейс настроек VSCode и выполните поискintelephense
.источник
auth()->user()
как класс \ App \ User, поэтому вызов метода внутри \ App \ User fromauth()->user()
будет обнаружен как ошибка. Я только добавилuse Illuminate\Support\Facades\Route;
в свои маршруты, чтобы исправить неопределенную ошибку маршрута символа.intelephense.diagnostics.undefinedMethods
иintelephense.diagnostics.undefinedType
работает.laravel-ide-helper
исправлено предупреждение. Спасибо!_ide_helper.php
как предложено в документах.Версия 1.3.0 имеет недостаток IMO.
Переход на версию 1.2.3 решает мою проблему.
Я на
источник
Вам не нужно понижать рейтинг, вы можете:
Либо отключите неопределенную диагностику символов в настройках - "intelephense.diagnostics.undefinedSymbols": false.
Или используйте помощник ide, который добавляет заглушки для фасадов laravel. Смотрите https://github.com/barryvdh/laravel-ide-helper
источник
Предупреждение Исчезло после импорта соответствующего пространства имен.
Версия-х
источник
laravel-ide-helper
Конфигурация есть.Route
, но у меня была та же ошибка дляAuth
, поэтому я также добавилuse Illuminate\Support\Facades\Auth;
. Задача решена.1.3.1 это исправили.
Просто обновите ваше расширение, и вы должны быть готовы
источник
Это решение может помочь вам, если вы знаете, что ваши проблемы касаются только фасадов и вы используете Laravel 5.5 или выше.
Установить laravel-ide-helper
composer require --dev barryvdh/laravel-ide-helper
Добавьте этот условный оператор в ваш,
AppServiceProvider
чтобы зарегистрировать вспомогательный класс.Затем запустите,
php artisan ide-helper:generate
чтобы сгенерировать файл, чтобы помочь IDE понять Фасады. Вам нужно будет перезапустить код Visual Studio.Ссылки
https://laracasts.com/series/how-to-be-awesome-in-phpstorm/episodes/16
https://github.com/barryvdh/laravel-ide-helper
источник
Auth
после перезапуска VS Code. Я сделал именно шаги, показанные в этом ответе. После перезапуска VS Code дайте ему минуту или две, и ошибки должны исчезнуть.Это действительно набор настроек для вашего редактора, чтобы понять Laravel.
Если вы хотите настроить все вручную, вот репо . Это для кода VS и PhpStorm.
Или, если вы хотите, вы можете загрузить этот пакет . (Я создал) рекомендуется установить его глобально.
А потом просто беги
andylaravel setupIDE
. это настроит все для вас в соответствии с первым репо.источник
Нет, ошибки возникают только после автоматического обновления расширения Intelephense.
Чтобы решить эту проблему, вы можете понизить ее до предыдущей версии, нажав «Установить другую версию» в расширении Intelephense. На версии 1.2.3 ошибок нет.
источник
Если вы видите это сразу после добавления нового класса Vendor, обязательно запустите команду VScode (control-shift-P)
Index Workspace
источник
Вот я решил:
Откройте настройки расширения:
И найдите переменную, которую вы хотите изменить, и снимите флажок / проверил ее
Переменные, которые вы должны учитывать:
источник
Тем, кто предпочел бы, чтобы это было просто, глупо; Если вы предпочитаете избавляться от уведомлений, а не устанавливать помощник или понижение версии, просто отключите ошибку в своем
settings.json
сообщении, добавив следующее:источник
1.3.3 это исправили. Просто обновите ваше расширение.
источник
У меня была та же проблема, и, кажется, следующее решило проблему.
а) Обновлен до последней версии 1.3.5 и повторно активировал все настройки диагностики.
Я все еще получал сообщения
б) Добавлена папка вендора с зависимыми библиотеками в рабочую область
Кажется, это решило проблему.
источник
laravel-ide-helper
Для тех, кто сталкивается с этими проблемами и не хочет отключать весь набор проверок, есть способ передать свои собственные подписи в Intelephense (я использую VSCode, но он должен работать так же для кода Visual Studio).
Скопировано из комментария репо Intelephese (@KapitanOczywisty):
https://github.com/bmewburn/vscode-intelephense/issues/892#issuecomment-565852100
В моем случае, мне нужно dspec - х
describe
,beforeEach
,it
... чтобы не быть выделен как ошибки, так что я просто включил файл с подписями/directories_and_paths/app/vendor/bin/dspec
в моих настройках рабочего пространства VSCode, которая выполняет функцию заявление мне нужно:источник