2016-09-29 9 views
2

私はPhpStorm 2016.2.1 IDEを使用します。私は型付きの配列を持っています(すべてのメンバーは既知のクラスと同じです)。IDEが型を知っているので、自動補完/ intellisenseで私を助けることができます。PhpStorm:配列メンバーのvar型を指定する方法は?

class MyClass{  
    /** 
    * @var array 
    */ 
    public $userArray; 

    public addUser($uid){ $this->$userArray[$uid] = new User($uid); } 

    public processUser($uid){ 

     $oUser = $this->$userArray[$uid]; 
      //since the PHP array can contain anything, the IDE makes 
      //no assumption about what data type $oUser is. How to let it 
      //know that it's of type User? 
    } 
} 

私はこれまでのところ、私は仕事に得ている唯一のことは、ゲッター機能を使用することです...

/** 
* @var User 
*/ 
public $oUser = ...; 

/** 
* @type User 
*/ 
public $oUser = ...; 

を試してみました:

/** 
* @return User 
*/ 
function getUser($uid){ return $this->$userArray[$uid]; } 

function processUser($uid){ 
    //now the IDE knows the type of $oUser 
    $oUser = $this->getUser($uid); 
} 

しかし、スクリプトを遅くするより良いIDEサポートを得るために必要な関数呼び出しは悪い考えです。

私はPhpStormにどのように変数の種類を知らせることができますか?それとも、配列のどのタイプにその配列のメタデータのPHPDocが含まれるかをどのように伝えるか?クラス変数の場合

答えて

2

、あなたが知っているように、あなたは、単にローカル変数の場合

@var User

を行うことができ、それが正式にサポートされているフォーマットではありませんが、あなたはまた、変数名を指定する必要があります。

@var User $oUser

PHPStormに特有の2つのアスタリスクを使用する必要があります(必要とする唯一のIDEだと思うので、考慮してください):

/** @var User $oUser */

+0

おかげ詳細はPHPDoc manualを参照してください。ローカル変数のために働く!型付き配列を示す方法はありますか? – BeetleJuice

+0

'@var User []'を使ってUserオブジェクトの配列を提案することはできますが、PHPStormがまだサポートしているかどうかは分かりません(https ://www.phpdoc.org/docs/latest/guides/types.html#arrays – rjdown

+0

もう一つの選択肢は、foreachループ内でヒントを提供することです。 – rjdown

関連する問題