用于Visual Studio Code或其他IDE的Laravel中的模型的Intellisense(自动完成)

时间:2018-01-11 16:21:08

标签: laravel autocomplete ide visual-studio-code intellisense

我正在寻找类似于Laravel中的.NET中的Intellisense。到目前为止,我一直在使用.NET,自动完成模型非常棒,让我的工作更轻松。

现在我需要创建Laravel应用程序,我一直在关注this tutorial来准备我的环境,但我得到的唯一自动完成是针对默认的PHP函数和一些预定义的方法(例如SaveSessionListener来自{ {1}} - 我甚至没有在任何地方使用Symfony。

我想要实现的是从模型中获取自动完成,例如在Laravel中有一个名为Model的类,我有扩展Model的类Page。

Symfony\Component\HttpKernel\EventListener

当我写use App/Page $home = new Page(); $home->content = "lorem ipsum"; $home->save(); ,没有$home->,没有content,只有一些随机函数时,我没有任何完成。我可以理解为什么可能没有save()自动完成 - 它没有直接写入代码,但是它写在数据库和对象数据库引擎上正在解析那个,我还没弄清楚怎么样,但我不知道理解为什么即使content没有自动完成。

我试图谷歌问题,但没有任何好结果。

2 个答案:

答案 0 :(得分:2)

我想出了如何使用Visual Studio Code。

第一个也是最重要的是我在评论中提供的链接变形: laravel-ide-helper

我只是关注了docs并生成了基本的helper + model helper。我想稍后我会自动执行这些生成命令,它还解释了如何在docs中执行此操作。

第二件事是它只适用于: PHP Intelephense plugin 请注意,您需要在实际运行之前重置VSC。

我做的第三件事 - VSC有内置的php自动完成功能,它非常烦人,因为它开始向我展示建议中的模型字段,但它介于几十个其他建议之间。要禁用内置自动完成功能,我在用户设置中添加了一行:

viewForAnnotation

我做的最后一件事 - 我已将代码段移到建议框的底部以清除自动填充结果:

"php.suggest.basic": false,

这在Laravel编程环境中非常有效。

答案 1 :(得分:2)

我使用 PHP Doc 进行字段定义,例如以下示例:

namespace App\Models;

use App\Enums\MediaType;
use App\Models\Commons\BaseModel;
use DateTime;

/**
 * Famous Media.
 *
 * @property int $id
 * @property int $famous_id
 * @property MediaType $type
 * @property string $url
 * @property int $position
 * @property DateTime $created_at
 * @property DateTime $updated_at
 */
class FamousMedia extends BaseModel
{
  const TABLE = 'famous_medias';

  /**
   * The attributes that are mass assignable.
   *
   * @var array
   */
  protected $fillable = [
    'type',
    'url',
    'position',
    'famous_id',
  ];

  /**
   * The attributes that should be hidden for arrays.
   *
   * @var array
   */
  protected $hidden = [
    'famous_id',
    'deleted_at',
    'created_at',
    'updated_at',
  ];

  public function famous()
  {
    return $this->hasOne(Famous::class, 'famous_id');
  }
}