PHPSorm + PHPdoc -我可以输入提示单个数组元素吗?

6jjcrrmo  于 2023-03-16  发布在  PHP
关注(0)|答案(7)|浏览(83)

我有:

$myarr['DB'] = new DB();
$myarr['config'] = new config();

我能让PHPSorm知道thouse键里面到底有什么吗?现在我只看到了变量和类属性的提示,但没有数组键。

v2g6jxz6

v2g6jxz61#

迟来的答复,但情况有变。
根据2021.2变更列表,现在可以用一行注解定义简单数组的形状:

/**
 * @return array{id: int, name: string, object: \Of\Some\Class}
 */
function getArray(): array {...}

如果代码中存在类似对象的数组,现在可以使用以下PHPDoc注解定义它们的结构:数组{键:类型,键:键入,...}。
PhpStorm为这种带注解的数组提供了代码完成功能,减少了您在日常输入上花费的时间,并保护您免受错误的影响。
支持仅限于单行数组形状定义。对于较大的结构,使用真实的对象和类通常更好。
不幸的是,我还没有找到定义多维数组结构的方法,如果能注解一个这样的“形状”数组的列表,那就太好了。

ha5z0ras

ha5z0ras2#

https://plugins.jetbrains.com/plugin/9927-deep-assoc-completion

图片来自插件的github存储库。我使用插件,并可以确认它的表现如所述。

jei2mxaa

jei2mxaa3#

您可以预先定义数组键,然后PHPSorm将建议它们(CTRL+空格)

$my = array();
$my['qwe'] = '';
$my['asd'] = '';
$my['zxc'] = '';

$my['']// inside '' will be autosuggest

您也可以使用phpdoc(CTRL+Q):

/**
 * keys:
 * <pre>
 * some_array   (array)
 * some_bool    (boolean)
 * some_double  (double)
 * some_nice_integer    (integer)
 * </pre>
 * @return array
 */
public function toArray(){
    // return some array
}
d8tt03nd

d8tt03nd4#

此功能在PhpStorm中尚未实现。请投票支持support array access功能请求。
你也可以试试silex idea plugin

l0oc07j2

l0oc07j25#

根据https://youtrack.jetbrains.com/issue/WI-59083/recognize-use-of-list-with-array-shapes,现在甚至可以描述列表中的项目形状:

/**
 * @return array<int, array{id: int, name: string}>
 */
function getShapedArray(): array {...}

可以很好地处理for循环,但在以下情况下无法完成:

$array = getShapedArray();
$elementId = 2;
// No completion for name property.
$array[$elementId]['name'];
ef1yzkbh

ef1yzkbh6#

对于任意数组,PHPSorm不知道在任何数组中使用的键,因此在那里不提供提示。甚至可以证明可靠地实现这样的特性是impossible,所以我认为您在这里运气不好。
采集自:
Stackoverflow Answer

ngynwnxp

ngynwnxp7#

$obj = (object)[]; // Cast empty array to object

add properties:
$obj->x = 'some'
$obj->y = 'hints'

现在,PHPSorm,当输入$obj->时.....提示x和y

相关问题