參考資料:PHP類中self和$this的區別
self:類本身的指標,$this:物件本身的指標
self即類本身,類本身的靜態屬性及靜態方法是佔有記憶體的,self與$this指向的是不同的記憶體(即不共享任何屬性)本例中 self:: = Demo::
以新物件為前提: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";
echo Demo::$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
40000
1
1
8000000
1600000000
本作品採用《CC 協議》,轉載必須註明作者和本文連結