11

別の次元内にある配列の値/オブジェクトを文書化する正しい方法はありますか?

通常、配列は次のように処理されます。

/** @var ClassName[] $Array */
$Array = array( $InstanceOfClassName,.. )

しかし、私はこのようなものが必要です:

/** @var ClassName[][] $Array */
$Array = array( 0 => array( $InstanceOfClassName,.. ) )

これは明らかに機能していません。正しい PHPDoc 表記法は何ですか?

4

2 に答える 2

6

まず、この @var の使用法が標準の phpDocumentor 仕様ではないことを理解してください。これは、さまざまな IDE が「ローカル変数のオートコンプリート」を可能にしようとしてきたさまざまな方法の 1 つです。Eclipse がフォーマットを使用していることは知っています/* @var $varName \ClassName */。したがって、他の回答/提案が入ってくるので、それを覚えておいてください.

2 次元配列でこの IDE オートコンプリート ハックを利用する唯一の方法は、後で最初の次元を読み取るときに別の @var を使用することですが、これには変数自体に入る必要があります。

/* @var $outer array */
$outer = array( 0 => array($InstanceOfClassName,...));

/* @var $inner ClassName[] */
$inner = $outer[0];

$inner[0]-> (ここで ClassName メソッドのオートコンプリートが期待されます)

繰り返しになりますが、これがオートコンプリートにどれほど役立つかは、IDE がどのようにビルドしたかによって異なります。一部の IDE は、ClassName[] 構文を認識し、$inner からプルされた要素が ClassName であると推測し、そのメソッドを表示できる場合があります。ただし、これを行うIDEを見たことがあるとは言えません。せいぜい、IDE が @var ハックをその最も基本的な形式で利用できるようにするだけで十分です ( /* @var $var ClassName */)。

TL;DR: 求めているものの半分を取得しようとするだけで、マイレージは異なる場合があります:-)

于 2013-12-12T14:58:08.827 に答える