PHPStorm代码提示对象数组的数组
发布时间:2020-12-13 13:22:59 所属栏目:PHP教程 来源:网络整理
导读:在 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 Fo
|
在
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时都不提醒它. 有没有办法实现这个?
根据
comments by @LazyOne中链接的
bug report,截至
PhpStorm EAP 138.256(因此在PHPStorm 8中),现在支持统一的多级数组doc解析.
这意味着您现在可以执行此操作: /**
* @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();
}
}
得到预期的: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
