我试图使用.phpstorm.meta.php
文件手动定义智能感知到我用来获取和设置数据库中的动态设置的函数。
想象一个这样的类:
class Setting
{
public function get(string $key) {
// ...
}
public function set(string $key, $value) {
// ...
}
}
然后,要定义$key
参数中可能的值,我可以在元文件中这样做:
namespace PHPSTORM_META {
expectedArguments(
AppModelsSetting::get(),
0,
'foo',
'bar',
'baz'
);
expectedArguments(
AppModelsSetting::set(),
0,
'foo',
'bar',
'baz'
);
}
问题是,可能值的列表很长,复制它们很麻烦。是否有一种方法来定义这些值在多个函数使用相同的语句?或者把它们放到一个数组中,然后使用它?我不能让它工作。
谢谢!
PhpStorm version: 2021.3.3.
当然,PhpStorm的高级元数据有命名的参数集功能:允许使用registerArgumentsSet()
定义参数集,然后使用argumentsSet()
在多个地方使用它。
它用于相当多的核心PHP函数,例如ini_get()
和ini_set()
等。
在你的例子中,它将是这样的:
namespace PHPSTORM_META {
registerArgumentsSet('ModelSettingArgs', 'foo', 'bar', 'baz');
expectedArguments(
AppModelsSetting::get(),
0,
argumentsSet('ModelSettingArgs')
);
expectedArguments(
AppModelsSetting::set(),
0,
argumentsSet('ModelSettingArgs')
);
}
PhpStorm高级元数据帮助页面:https://www.jetbrains.com/help/phpstorm/ide-advanced-metadata.html#arguments-set