91

インテリセンスがそれを拾うように、ネットビーンズに通常の変数の型ヒントを与える方法があるかどうかだけ興味があります。クラスプロパティ、関数パラメーター、戻り値の型などに対してできることは知っていますが、通常の変数に対してそれを行う方法がわかりません。これは、さまざまなオブジェクト タイプを返すことができるメソッド (サービス ロケーターなど) がある場合に非常に役立ちます。

例:

/**
 * @var Some_Service $someService
 */
$someService = ServiceLocator::locate('someService');

後で $someService を使用すると、netbeans はクラス Some_Service で定義されたすべての使用可能なメソッドを提供します。

4

6 に答える 6

191

必要なのは 1 行だけです。

/* @var $varName Type_Name */

NetBeans PHP ブログの次の記事を参照してください: https://blogs.oracle.com/netbeansphp/entry/defining_a_variable_type_in

注: 少なくとも、バージョン 8.2 では。キーは次のようです。

  • 単一のアスタリスク (/*の代わり/**)。
  • 変数名の後に型を配置します。
  • タイプヒントの前後には何もありません (空白を除きますが、コメントが 1 行にない場合はそれも許可されません)。
于 2009-11-25T17:57:47.537 に答える
24

これは古い質問であることは知っていますが、Eclipse/Zend Studio についても同様の回答を探していましたが、これも解決しました。

**ただし、このスタイルでは開始と終了を明示的に 1 行で行う必要があることに注意してください...

/* @var $varName Type_Name */

他の形式はありません...

/**
 * @var $varName Type_Name
 */ 

また...

// @var $varName Type_Name

まったく機能しているように見えました。それが誰かを助けることを願っています。

于 2012-09-04T20:00:32.853 に答える
10

それらの厄介な魔法の変数を文書化しようとしていますか? (私はそうしました。現在、この質問は Google で上位の結果にランクされています。これが誰かの役に立てば幸いです。)

@propertyタグを使用すると、魔法の php 変数 ( および を使用して実装されたもの) を文書でき__get()ます__set()。タグは、クラス定義の直前のドキュメントで使用する必要があります。

/**
 * Class Contact
 * @property string $firstName
 * @property string $lastName
 */
class Contact extends Model {
   ...

この表記はオートコンプリートをトリガーし、Netbeans 8.1 および PhpStorm 2016.1 でテストされています。

ここに画像の説明を入力

于 2016-05-11T10:37:39.683 に答える
2

netbeans 8.0.2 では、vdocテンプレートによって次のようになります。

/* @var $variable type */

ただし、Netbeans はこれを認識せず、オブジェクトの正しいオートコンプリート リストを提供しません。代わりに、変数宣言の直前にこれを使用します。

/** @var objectType $varName */

ストックvdocテンプレート、特に PDO または PDOStatement オブジェクトとして使用されるクラス変数の優れた使用法を実際には見たことがありません。

私が実際に使用する 1 つの解決策は、[ツール]、[オプション]、[エディター]、[コード テンプレート] (言語として PHP を選択) に移動し、新しいテンプレートを追加することです。私は私のヒントを呼びました。次に、拡張テキストの下で、次のテンプレートを使用します。

/** @var ${VAR_TYPE variableFromNextAssignmentType default="ClassName"} $$${VARIABLE variableFromNextAssignmentName default="variable"} */
于 2015-03-28T19:30:27.777 に答える