[php] Visual Studio Code PHP Intelephense가 필요하지 않은 오류를 계속 표시

오늘 내가 얻는 PHP 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 1.3에는 정의되지 않은 유형, 함수, 상수, 클래스 상수, 메서드 및 속성 진단이 추가되었으며 이전에는 1.2에서 정의되지 않은 변수 진단 만있었습니다.

일부 프레임 워크는 사용자에게 편리한 바로 가기를 제공하는 방식으로 작성되었지만 정적 분석 엔진이 런타임시 사용 가능한 기호를 발견하기 어렵습니다.

https://github.com/barryvdh/laravel-ide-helper 와 같은 스텁 생성기는 여기의 차이를 메우는 데 도움이되며이를 Laravel과 함께 사용하면 쉽게 발견 할 수있는 기호에 대한 구체적인 정의를 제공함으로써 많은 잘못된 진단을 처리 할 수 ​​있습니다.

여전히 PHP는 매우 유연한 언어이며 코드 작성 방법에 따라 다른 정의되지 않은 기호가있을 수 있습니다. 이러한 이유로, 1.3.3부터 인텔리전스에는 작업 공간 및 코딩 스타일에 맞게 정의되지 않은 기호의 각 범주를 활성화 / 비활성화하는 구성 옵션이 있습니다.

이러한 옵션은 다음과 같습니다.
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 동작을 제외하고 이들 모두를 false로 설정하면 VSCode 설정 UI를 참조하여를 검색하십시오 intelephense.


답변

버전 1.3.0에는 결함 IMO가 있습니다.
버전 1.2.3으로 다운 그레이드하면 문제가 해결됩니다.

나는

  • 라 라벨 5.1
  • PHP 5.6.40

버전 1.2.3으로 다운 그레이드


답변

다운 그레이드 할 필요는 없습니다.

설정에서 정의되지 않은 기호 진단을 비활성화하거나 “intelephense.diagnostics.undefinedSymbols”: false입니다.

또는 라 라벨 파사드에 대한 스터브를 추가하는 ide 도우미를 사용하십시오. 참조 https://github.com/barryvdh/laravel-ide-helper를


답변

use Illuminate\Support\Facades\Route;

경고 해당 네임 스페이스를 가져온 후 사라졌습니다.

버전

  • Larvel 6+
  • vscode 버전 1.40.2
  • PHP 정보 1.3.1

답변

1.3.1 고정.

확장 프로그램을 업데이트하기 만하면됩니다.


답변

이 솔루션은 문제가 Facades로 제한되어 있고 Laravel 5.5 이상을 실행중인 경우 도움이 될 수 있습니다.

laravel-ide-helper 설치

composer require --dev barryvdh/laravel-ide-helper

AppServiceProvider헬퍼 클래스를 등록하려면 이 조건문을 추가하십시오 .

public function register()
{
    if ($this->app->environment() !== 'production') {
        $this->app->register(\Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class);
    }
    // ...
}

그런 다음 php artisan ide-helper:generateIDE가 Facades를 이해하는 데 도움이되는 파일을 생성하기 위해 실행 하십시오. Visual Studio Code를 다시 시작해야합니다.

참고 문헌

https://laracasts.com/series/how-to-be-awesome-in-phpstorm/episodes/16

https://github.com/barryvdh/laravel-ide-helper


답변

이것은 에디터가 라 라벨을 이해하기위한 설정입니다.

모두 수동으로 구성하려면 여기에 repo가 있습니다. 이것은 VS 코드와 PhpStorm 모두를위한 것입니다.

또는 원하는 경우이 패키지를 다운로드 할 수 있습니다 . 전 세계적으로 설치하는 것이 좋습니다.

그런 다음 실행하십시오 andylaravel setupIDE. 이것은 주먹 저장소에 따라 모든 것을 구성합니다.