我已经在互联网上搜索了一个有效的解释,为什么$this
未定义时代表当前类。
我在搜索时在文档中找到了这个$this
:
当从对象上下文中调用方法时,伪变量 $this 可用。$this 是对调用对象的引用(通常是方法所属的对象,但也可能是另一个对象,如果该方法是从辅助对象的上下文中静态调用的)。
我理解在一定程度上,让我们以下面的例子为例:
class Foo {
public $Database;
public function __construct() {
$this->Database = 'Test';
}
protected function Test()
{
return 'Example';
}
public function BarFunction()
{
return $this->Test();
}
}
$Test = new Foo();
echo $Test->Database;
echo "\r\n\r\n";
echo $Test->BarFunction();
输出:
Test
Example
使用静态函数时,self::
接管$this
所以我的总体问题是,为什么$this
自动占位符代表当前类而无需在使用之前定义?
为什么self::
只能与静态函数一起使用?因为总的来说,我在使用时看到它更整洁
self::ProtectedFunction();
超过:
$This->ProtectedFunction();