首页 > 解决方案 > Laravel 包的 VSCode 自动完成问题

问题描述

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

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

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

是我想要的一个例子。

标签: phplaravelautocompletevisual-studio-code

解决方案


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,但它也不能识别魔法方法(至少不是开箱即用的)——但它确实将它识别为魔法属性。


推荐阅读