在您的Laravel项目中处理不正确的php intlephense错误
#php #laravel #vscode

如果您是使用VS代码的PHP开发人员,则使用PHP Intelephense插件几乎是不费吹灰之力的。它为您的PHP代码提供了极好的智能意义,并使生活更轻松。

它提示您在代码中修复任何未定义的类型,功能,常数,类别,方法或属性。这很棒,这就是我们要安装它的原因。但是,如果您是像我这样的人,他们不希望您的代码中出现任何红色摇摆错误/警告线 - 有时可能有些问题。

让我举一个例子 - 我最近在一个项目中使用了Laravel Livewire,我想从Livewire Component中将一些参数传递给默认的AppLayout类。

Valid Code yet intelephense warning

我知道这是一个完全有效的代码,文档中存在layout()方法。这些参数也是正确的,并且代码在不引发任何错误或异常的情况下起作用。

,但是每次我打开文件时,都会看到这很烦人。要添加更多文件,所有文件和文件夹在我的VS Code Explorer中似乎也为红色(包含错误)。

除了我对此过敏外,实际问题是 - 我不知道VS Code Explorer中的警告是由我的愚蠢代码引起的,还是由于未识别的layout()方法而引起的。<<<<<<<<<<< /p>

我在Stack Overflow上搜索了一个可能的解决方案。

文章中有几个解决方案:

  1. 使用Laravel IDE助手:https://github.com/barryvdh/laravel-ide-helper
  • 这对我来说太重了,确保那些警告很烦人,但我不想为此安装整个包裹 - 也许这是您的事

  • 如果我的解决方案可能无法正常工作,则我将来会切换到

  1. 使用 _ide_helper.php 并将其在您的代码中使用,就像在此Laracast Video中所解释的那样
  • 我喜欢这种方法,它不太重,仍然可以起作用

我最终实现了另一个解决方案。创建一个专门针对警告中显示的方法的助手类。

这是我的做法

  1. app\Helpers目录中创建一个新的助手类IntelephenseHelper.php

  2. 添加以下代码

    <?php
    
    namespace Illuminate\Contracts\View;
    
    use Illuminate\Contracts\Support\Renderable;
    
    interface View extends Renderable
    {
      /** @return static */
      public function layout();
      public function slot();
    }
    

警告消失了!

它的作用非常简单且不言而喻。它扩展了接口并添加了显示警告的方法。

不再有红色摇摆不定的警告,也没有更多令人讨厌的红色文件指标。生活又更加简单。


如果您只是从Laravel开始,这是我写的一篇文章,可能对您有用:How to write clean Controllers in Laravel

我希望您能发现这很有价值 - 如果与他们相关的话,很棒的ð与您的人们分享。如果您有任何建议/评论,请自由。

快乐编码!