Laravel软件包的VSCode自动完成问题

时间:2018-08-09 15:25:54

标签: php laravel autocomplete visual-studio-code

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

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

您知道如何解决此问题吗? 这很烦人,主要是在您学习新知识时,自动完成功能会有所帮助。

This是我想要的示例。

1 个答案:

答案 0 :(得分:0)

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()方法,因为它是一种魔术方法。

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

/**
 * @property string $address
 */

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

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


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