gpt4 book ai didi

对象数组数组的 PHPStorm 代码提示

转载 作者:可可西里 更新时间:2023-11-01 12:34:57 26 4
gpt4 key购买 nike

在 PHPStorm 中,对象数组的代码提示非常简单而且很棒;

class FooList {
public function __construct(){
$this->_fooList[] = new Foo(1);
$this->_fooList[] = new Foo(2);
$this->_fooList[] = new Foo(3);
$this->_fooList[] = new Foo(4);
}

/**
* @return Foo[]
*/
getFoos() {
return $this->_fooList;
}
}

如果我这样做...

$fooList = new FooList();

foreach($fooList as $foo)
{
// Nice hinting.
$foo->FooMethod...
}

PHPStorm 知道 $fooList 是一个 Foos 数组,因此知道 $foo 的类型是 Foo。

问题是我想要一个 FooList 数组。

$listOfLists[] = new FooList();
$listOfLists[] = new FooList();
$listOfLists[] = new FooList();
$listOfLists[] = new FooList();

foreach ($listOfLists as $fooList)
{
foreach($fooList as $foo)
{
// No code hinting for $foo :(
}
}

我知道您可以在 foreach 中手动编写提示代码,例如...

foreach ($listOfLists as $fooList)
{
foreach($fooList as $foo)
{
/** $var $foo Foo */
// Code hinting, yay!!
}
}

或者……

foreach ($listOfLists as $fooList)
{
/** $var $fooList Foo[] */
foreach($fooList as $foo)
{
// Code hinting, yay!!
}
}

但我认为那是丑陋的,因为 $listOfLists 是 Foo 数组的构建,它应该知道我在说什么,而不需要每次我实现 listOfLists 时都提醒它。

有没有办法实现这个?

最佳答案

根据 bug report链接在 comments by @LazyOne , 自 PhpStorm EAP 138.256 (因此在 PHPStorm 8 中)现在支持统一的多级数组文档解析。

这意味着您现在可以这样做:

/**
* @var $listOfLists Foo[][]
*/
$listOfLists[] = (new FooList())->getFoos();
$listOfLists[] = (new FooList())->getFoos();
$listOfLists[] = (new FooList())->getFoos();
$listOfLists[] = (new FooList())->getFoos();

foreach ($listOfLists as $fooList)
{
foreach($fooList as $foo)
{
// Code hinting, yay!!
$foo->fooMethod();
}
}

并得到预期的:

Screenshot

关于对象数组数组的 PHPStorm 代码提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20643245/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com