2013-12-17 12 views
8

PHPStormでは、オブジェクト配列のコードヒントはシンプルで素晴らしいです。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 ($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!! 
    } 
} 

、あなたはforeachの内部で手動でヒントをコーディングすることができます知っている。しかし、私はそれが醜いだと思います、 $ listOfListsはFoo配列のビルドであるため、listOfListsを実装するたびに思い出させることなく、私が何を話しているのかを知る必要があります。

これを実装する方法はありますか?

+3

http://youtrack.jetbrains.com/issue/WI-12303 – LazyOne

+0

おかげLazyOne

これは、あなたが今、この操作を行うことができることを意味します!私はすでにその問題をUpvoted。この問題が実際に要求された機能であることを説明する回答とともにこの投稿に返信すると、私はそれを受け入れます。 –

+3

この質問は、サードパーティアプリケーションの機能要求に関するものであるため、話題にはならないようです。 –

答えて

8

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

関連する問題