我有一个像
这样的课程class bank
{
public $accounts;
public function __construct()
{
$accounts = new Accounts();
}
public function fun1()
{
///some code
}
}
在fun1()
内,我在使用
$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
}
}
我们可以覆盖行为并显示新类的功能,引用指向
答案 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 $accounts
,public $accounts
或private $accounts