PHP用self和$this的差异


(1).self是参照到当前的class,$this是参照到当前的object ( 已经被声明的实体上 )

(2).self 可使用在static上,$this不行

static method 因为没有对应的实体,所以需要注意不可以使用 $this ,要用self::
可以直接存取 static method ( 如self::method() ),但是无法直接存取 static property 中的预先声明的值

(3). 可用 new self() 调用自己

以下是(1)的范例:

class name
{
    public $name;
    public function getname()
    {
        return $this->name = "mick";
    }
    public function getnamebythis()
    {
        return $this->getname();
    }

    public function getnamebyself()
    {
        return self::getname();
    }
}

class name2 extends name
{
    public function getname()
    {
        return $this->name = "jeff";
    }
}

$newname = new name2();
echo $newname->getnamebythis() . "
"; // 出现mick
echo $newname->getnamebyself() . "
"; // 出现jeff