【问题标题】:VSCode autocompletion issues for Laravel packagesLaravel 包的 VSCode 自动完成问题
【发布时间】:2019-01-17 03:26:30
【问题描述】:

我在 VSCode 中遇到自动补全问题:文本编辑器没有显示外部包方法的建议。

在这种情况下,我正在尝试使用 Faker 包,但是当我输入 $faker->addr 时,我在自动完成提示中看不到方法 address()

你知道如何解决这个问题吗? 这很烦人,主要是在你学习新东西时,自动补全很有帮助。

This 是我想要的一个例子。

【问题讨论】:

  • 我的 1 美分,使用 PHPStorm。
  • 您使用的是内置的 PHP 引擎还是一些第三方扩展?你如何定义$faker
  • @ÁlvaroGonzález 我正在使用一些 PHP 扩展,例如 IntelliSense、PHP formattere 等。我以这种方式定义了$faker $faker = Faker\Factory::create('it_IT');
  • VSCode 不是 IDE,它是一个文本编辑器。 PHPStorm 或 Netbeans 是 IDE。
  • @SuperDJ 是的,你是对的。我的错

标签: php laravel autocomplete visual-studio-code


【解决方案1】:

Faker\Factory::create() 看起来像这样:

/**
 * Create a new generator
 *
 * @param string $locale
 * @return Generator
 */
public static function create($locale = self::DEFAULT_LOCALE)
{
    $generator = new Generator();
    foreach (static::$defaultProviders as $provider) {
        $providerClassName = self::getProviderClassname($provider, $locale);
        $generator->addProvider(new $providerClassName($generator));
    }

    return $generator;
}

这意味着,除非你有一个非常酷的静态分析引擎,否则编辑器将看到的只是一个Faker\Generator 实例。而且这样的类没有任何address() 方法,因为它是一个神奇的方法。

但是,该库使用注释来描述魔术属性

/**
 * @property string $address
 */

这意味着您可以明智地期望至少获得这样的财产。

根据我的经验,PHP IntelephensePHP IntelliSense 稍微聪明一些。我可以向您确认,至少在这种情况下,Intelephense 实际上建议将$faker->address 作为属性,而 IntelliSense 则没有。


出于好奇,我用fzaninotto/faker 尝试了 PhpStorm,但它也不能识别魔法方法(至少不是开箱即用的)——但它确实将它识别为魔法属性。

【讨论】:

  • 非常感谢,我刚刚安装了 Intelephense!顺便说一句,在我实际上正在学习 Udemy 的课程中​​,讲师使用 PHPStorm 并且它可以识别方法(可能带有一些插件)。
猜你喜欢
  • 1970-01-01
  • 2018-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-02
  • 2013-01-22
相关资源
最近更新 更多