PHPStorm + PHPdoc - 我可以键入提示单个数组元素吗?
PHPStorm + PHPdoc - can I type hint individual array element?
我有:
$myarr['DB'] = new DB();
$myarr['config'] = new config();
我可以通过某种方式让 PHPStorm 知道这些密钥中到底有什么吗?现在我只看到提示变量和 class 属性,而不是数组键。
PhpStorm 尚未实现此功能。为 support array access 个功能请求投票。
你也可以试试silex idea plugin。
对于任意数组,PHPStorm 不知道任何数组中使用的键,因此不提供提示。甚至可以证明 impossible 可靠地实现这样的功能,所以我认为你在这里运气不好。
收集自:
Whosebug Answer
您可以预先定义数组键,然后PHPStorm会建议它们(CTRLspace)
$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
}
$obj = (object)[]; // Cast empty array to object
add properties:
$obj->x = 'some'
$obj->y = 'hints'
现在,PHPStorm,当输入 $obj->
..... 提示 x 和 y
https://plugins.jetbrains.com/plugin/9927-deep-assoc-completion
图片来自插件的 github 仓库。我使用该插件并可以确认它按照描述执行。
迟到的答案,但情况已经改变。
根据2021.2 changelist,现在可以用一行注释定义简单数组的形状:
/**
* @return array{id: int, name: string, object: \Of\Some\Class}
*/
function getArray(): array {...}
If there are object-like arrays in your code, you can now define their structure with this PHPDoc annotation: array{key: type, key: type, ...}.
PhpStorm provides code completion for such annotated arrays, reducing the time you spend on routine typing and protecting you from mistakes.
The support is limited to one-line array shape definitions. For larger structures, it is often better to use real objects and classes.
不幸的是,我还没有找到一种方法来定义多维数组的结构,如果能对这样的“形状”数组的列表进行注释就太好了...
我有:
$myarr['DB'] = new DB();
$myarr['config'] = new config();
我可以通过某种方式让 PHPStorm 知道这些密钥中到底有什么吗?现在我只看到提示变量和 class 属性,而不是数组键。
PhpStorm 尚未实现此功能。为 support array access 个功能请求投票。
你也可以试试silex idea plugin。
对于任意数组,PHPStorm 不知道任何数组中使用的键,因此不提供提示。甚至可以证明 impossible 可靠地实现这样的功能,所以我认为你在这里运气不好。
收集自:
Whosebug Answer
您可以预先定义数组键,然后PHPStorm会建议它们(CTRLspace)
$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
}
$obj = (object)[]; // Cast empty array to object
add properties:
$obj->x = 'some'
$obj->y = 'hints'
现在,PHPStorm,当输入 $obj->
..... 提示 x 和 y
https://plugins.jetbrains.com/plugin/9927-deep-assoc-completion
图片来自插件的 github 仓库。我使用该插件并可以确认它按照描述执行。
迟到的答案,但情况已经改变。
根据2021.2 changelist,现在可以用一行注释定义简单数组的形状:
/**
* @return array{id: int, name: string, object: \Of\Some\Class}
*/
function getArray(): array {...}
If there are object-like arrays in your code, you can now define their structure with this PHPDoc annotation: array{key: type, key: type, ...}.
PhpStorm provides code completion for such annotated arrays, reducing the time you spend on routine typing and protecting you from mistakes.
The support is limited to one-line array shape definitions. For larger structures, it is often better to use real objects and classes.
不幸的是,我还没有找到一种方法来定义多维数组的结构,如果能对这样的“形状”数组的列表进行注释就太好了...