1

私は次のようなクラスを持っています

class bank
{
    public $accounts;
    public function __construct()
    {
           $accounts = new Accounts();
    }

    public function fun1()
    {
           ///some code
    }
}

内部fun1()では、使用時にオートコンプリート(PHPStormおよびEclipseで)機能を取得できません

$this->accounts->..any function

しかし、直接使用するとうまく動作します

$accounts->..auto complete works fine here

最初のケースで同じことを達成できますか?

更新:正しく指摘してくれた Berry Langerak に感謝します。

また、可能ですか?

class bank
{
    public $accounts;
    public function __construct()
    {
           $this->accounts = new Accounts();
    }

    public function fun1()
    {
           ///Note changing the reference now
           $this->accounts = new OldAccounts();
           $this->accounts->..it still shows the functions of Accounts Class, can we override this setting in PHPStorm
    }
}

動作をオーバーライドして、新しいクラスの機能を表示できますか。参照は次を指しています

4

3 に答える 3

3

これは、コンストラクターで「新しいアカウント」をローカル変数に設定しているのに対し、クラス変数($ thisなし)に設定しているためです。

class bank
{
    public $accounts;
    public function __construct()
    {
           $this->accounts = new Accounts();
    }

    public function fun1()
    {
           $this->accounts->doStuff( );

           /* @var OldAccounts $this->accounts */
           $this->accounts = new OldAccounts;
    }
}
于 2012-08-29T14:36:20.147 に答える
2

これは、変数が文書化されていないためです。これにより、IDE に参照が通知されます (3 行目):

/* @var Accounts */
$accounts
于 2012-08-29T14:30:21.193 に答える
0

クラス変数として定義していないためだと思います。IEそれはあるべきですprotected $accountspublic $accountsまたはprivate $accounts

于 2012-08-29T14:33:27.143 に答える