Visual Studio Code PHP Intelephense Keep Showing Not Necessary Error

前端 未结 15 803
广开言路
广开言路 2020-12-04 06:14

After the latest update of PHP Intelephense that I get today, the intelephense keep showing an error for an undefined symbol for my route (and other class too), there is no

相关标签:
15条回答
  • I had the same issue and the following seemed to have addressed the issue.

    a) Updated to latest version 1.3.5 and re-enabled all the diagnosis settings.

    I was still getting the messages

    b) Added the vendor folder with the dependent libraries to the workspace

    This seems to have solved the problem.

    0 讨论(0)
  • 2020-12-04 06:59

    Here is I solved:

    Open the extension settings:

    And search for the variable you want to change, and unchecked/checked it

    The variables you should consider are:

    intelephense.diagnostics.undefinedTypes 
    intelephense.diagnostics.undefinedFunctions         
    intelephense.diagnostics.undefinedConstants         
    intelephense.diagnostics.undefinedClassConstants 
    intelephense.diagnostics.undefinedMethods 
    intelephense.diagnostics.undefinedProperties 
    intelephense.diagnostics.undefinedVariables
    
    0 讨论(0)
  • 2020-12-04 06:59

    In my case, for some reason, vendor folder was disabled on VS Code settings:

        "intelephense.files.exclude": [
            "**/.git/**",
            "**/.svn/**",
            "**/.hg/**",
            "**/CVS/**",
            "**/.DS_Store/**",
            "**/node_modules/**",
            "**/bower_components/**",
            "**/vendor/**", <-- remove this line!
            "**/resources/views/**"
        ],
    

    By removing the line containing vendor folder it works ok on version Intelephense 1.5.4

    0 讨论(0)
  • 2020-12-04 07:02

    This solution may help you if you know your problem is limited to Facades and you are running Laravel 5.5 or above.

    Install laravel-ide-helper

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

    Add this conditional statement in your AppServiceProvider to register the helper class.

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

    Then run php artisan ide-helper:generate to generate a file to help the IDE understand Facades. You will need to restart Visual Studio Code.

    References

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

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

    0 讨论(0)
  • 2020-12-04 07:02

    This is really a set of configurations for your editor to understand Laravel.

    If you want to configure it all manually, here is the repo. This is for both VS code and PhpStorm.

    Or if you want you can download this package.(I created) recommended to install it globally.

    And then just run andylaravel setupIDE. this will configure everything for you according to the fist repo.

    0 讨论(0)
  • 2020-12-04 07:04

    Intelephense 1.3 added undefined type, function, constant, class constant, method, and property diagnostics, where previously in 1.2 there was only undefined variable diagnostics.

    Some frameworks are written in a way that provide convenient shortcuts for the user but make it difficult for static analysis engines to discover symbols that are available at runtime.

    Stub generators like https://github.com/barryvdh/laravel-ide-helper help fill the gap here and using this with Laravel will take care of many of the false diagnostics by providing concrete definitions of symbols that can be easily discovered.

    Still, PHP is a very flexible language and there may be other instances of false undefined symbols depending on how code is written. For this reason, since 1.3.3, intelephense has config options to enable/disable each category of undefined symbol to suit the workspace and coding style.

    These options are: intelephense.diagnostics.undefinedTypes intelephense.diagnostics.undefinedFunctions intelephense.diagnostics.undefinedConstants intelephense.diagnostics.undefinedClassConstants intelephense.diagnostics.undefinedMethods intelephense.diagnostics.undefinedProperties intelephense.diagnostics.undefinedVariables

    Setting all of these to false except intelephense.diagnostics.undefinedVariables will give version 1.2 behaviour. See the VSCode settings UI and search for intelephense.

    0 讨论(0)
提交回复
热议问题