我在互联网上搜索了一个有效的解释,为什么$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();
答案 0 :(得分:3)
self
指的是当前的类,$this
指的是该类的当前实例。