我对VSCode中的自动补全有问题:文本编辑器没有向我显示有关外部包方法的建议。
在这种情况下,我正在尝试使用Faker软件包,但是当我键入$faker->addr
时,在自动完成提示中看不到方法address()
。
您知道如何解决此问题吗? 这很烦人,主要是在您学习新知识时,自动完成功能会有所帮助。
This是我想要的示例。
答案 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 Intelephense比PHP IntelliSense聪明一点。我可以确认一下,至少在这种情况下,Intelephense实际上建议将$faker->address
作为属性,而IntelliSense则不建议。
出于好奇,我尝试使用fzaninotto/faker来尝试PhpStorm,但它也不能识别魔术方法(至少不是开箱即用),尽管它确实将其识别为魔术属性。