php - Laravel 包的 VSCode 自动完成问题
问题描述
我在 VSCode 中遇到自动完成问题:文本编辑器没有向我显示有关外部包方法的建议。
在这种情况下,我正在尝试使用 Faker 包,但是当我输入 时$faker->addr
,我在自动完成提示中看不到该方法address()
。
你知道如何解决这个问题吗?这很烦人,主要是在你学习新东西时,自动补全有很大帮助。
这是我想要的一个例子。
解决方案
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 Intelephense比PHP IntelliSense稍微聪明一些。我可以向您确认,至少在这种情况下,Intelephense 实际上建议$faker->address
作为属性,而 IntelliSense 没有。
出于好奇,我用fzaninotto/faker尝试了 PhpStorm,但它也不能识别魔法方法(至少不是开箱即用的)——但它确实将它识别为魔法属性。
推荐阅读
- bash - CURL 的 GET 请求忽略了参数
- django - 过滤两个具有多对多关系的查询集
- python - Python 以管理员身份运行 Powershell
- excel - SAS:使用包含不同日期格式的列导入 Excel 文件(xlsx)
- javascript - 动态变量和点击不起作用
- angular - 使用 angular7 一个一个地显示组件的子级
- sql - 使用 ms sql server 查询 OneToOne 映射需要 8 秒以上
- python - 是否有转换ndarray所有元素的功能?
- c# - 使用c#获取调用函数的对象
- ios - 如何使用蒙版剪辑 CAGradientLayer?