參考資料:PHP類中self和$this的區別
self:類本身的指標,$this:物件本身的指標
- 可以把self看作是擁有類靜態屬性與靜態方法的一個「特殊物件」,self與$this指向的是不同的記憶體(即不共享任何屬性)
新物件為前提:new self($a) = new static($a) = $this;
程式碼
<?php
class Demo{
public $a=1;
public $b;
public static $c = 1;
public function __construct($a){
$this->a = $a;
}
public function func(){
echo new self(10) == new static(10);echo "\n";//1
echo new self(10) == $this;//1
}
public function funct(){
echo self::$c *= 200;echo "\n";
}
}
$demo = new Demo(10);
$demo->func();echo "\n";//全新物件對比,結果 1
$demo->funct();echo "\n";//self 對靜態屬性計算 200
$demo->func();echo "\n";//重新對比 結果 1
$demo2 = new Demo(10);
$demo2->funct();echo "\n"; //self 對靜態屬性計算 40000
結果
E:\server\wwwroot\php_frame_study>php test.php
1
1
200
1
1
40000
本作品採用《CC 協議》,轉載必須註明作者和本文連結