手册上说:当一个方法在类定义内部被调用时,有一个可用的伪变量 $this 。 $this 是一个到主叫对象的引用
出处:http://be2.php.net/manual/zh/language.oop5.basic.php
以前一直以为$this是指向当前类名new出的对象,然而,$this 是一个到主叫对象的引用告诉我们,谁调用了方法,方法中的$this就指向谁。
例如:
class Father{
public $name = 'Father';
protected $age = 35;
private $hobby = 'read';
public function __construct(){
echo $this->name."\n";
echo $this->age."\n";
echo $this->hobby."\n";
$this->read();
}
public function read(){
echo 'father'."\n";
}
}
class Son extends Father{
public $name = 'Son';
protected $age = 15;
private $hobby = 'code';
public function __construct(){
parent::__construct();
}
public function read(){
echo 'son';
}
}
$Son = new Son();
输出 Son 15 read son
此时$Son是主叫对象,所以,一些可以重写的属性,方法,都会指向类Son ,而私有的属性,方法还是调用$this所属类的。