【问题标题】:PHPStorm + PHPdoc - can I type hint individual array element?PHPStorm + PHPdoc - 我可以输入提示单个数组元素吗?
【发布时间】:2015-12-13 05:09:09
【问题描述】:

我有:

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

我可以通过某种方式让 PHPStorm 知道 thouse 密钥中的确切内容吗?现在我只看到提示变量和类属性,而不是数组键。

【问题讨论】:

标签: php phpstorm phpdoc


【解决方案1】:

这个功能在 PhpStorm 中还没有实现。为support array access 功能请求投票。

你也可以试试silex idea plugin

【讨论】:

  • 多想一下 PHP 何时知道结构。例如,我将带有 JSON 的行从 DB 女巫解码然后返回到 4D 数组,并且很好地提示主题。但唯一的方法是 PHPdocking,遗憾的是没有那个语法=(
【解决方案2】:

对于任意数组,PHPStorm 不知道任何数组中使用的键,因此不提供提示。甚至可以证明是impossible 可靠地实现了这样一个功能,所以我认为你在这里运气不好。

收集自:

Stackoverflow Answer

【讨论】:

  • 不要认为 DHPdocing 类属性更可靠。为什么不使用 PHPdoc 数组键?在使用服务容器时特别有用。
  • 不是不可能,只是很难。 plugins.jetbrains.com/plugin/9927-deep-assoc-completion 像冠军一样工作,没有明显的性能下降(phpStorm 有点像野兽,所以再过一秒钟左右生成索引就会被忽视)。在 laravel 和 WP 项目中使用了几天 - 它很可爱。
【解决方案3】:

你可以预先定义数组键,然后PHPStorm会建议它们(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
}

【讨论】:

    【解决方案4】:
    $obj = (object)[]; // Cast empty array to object
    
    add properties:
    $obj->x = 'some'
    $obj->y = 'hints'
    

    现在,PHPStorm,当输入 $obj-&gt; ..... 提示 x 和 y

    【讨论】:

    • 使用new stdClass()避免类型转换。
    【解决方案5】:

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

    来自插件的 github 存储库的图像。我使用了该插件,并且可以确认它按描述执行。

    【讨论】:

    • 我使用这个插件,是的,它就像一个魅力只要所有资产都加载到项目范围内
    【解决方案6】:

    迟到的答案,但情况发生了变化。

    根据2021.2 changelist,现在可以用一行注释定义简单数组的形状:

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

    如果您的代码中有类似对象的数组,您现在可以使用以下 PHPDoc 注释定义它们的结构:array{key: type, key: type, ...}。

    PhpStorm 为此类带注释的数组提供代码补全,减少您在日常输入上花费的时间并防止您出错。

    支持仅限于单行数组形状定义。对于较大的结构,通常最好使用真实的对象和类。

    不幸的是,我还没有找到一种方法来定义多维数组的结构,如果对这样的“成形”数组的列表进行注释会很棒...

    【讨论】:

      猜你喜欢
      • 2017-11-13
      • 2023-04-08
      • 2019-07-18
      • 1970-01-01
      • 1970-01-01
      • 2020-03-01
      • 2021-07-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多