跳转到PHP中的函数声明

时间:2012-08-29 14:24:53

标签: php phpstorm

我有一个像

这样的课程
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
    }
}

我们可以覆盖行为并显示新类的功能,引用指向

3 个答案:

答案 0 :(得分: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;
    }
}

答案 1 :(得分:2)

这是因为该变量尚未记录。这将让IDE知道引用(第3行):

/* @var Accounts */
$accounts

答案 2 :(得分:0)

我认为这是因为您没有将其定义为类变量。 IE应该是protected $accountspublic $accountsprivate $accounts