php中this和self的差別是:self呼叫的是類,而$this呼叫的是實例化的物件。 self可以存取本類別中的靜態屬性和靜態方法,以及const定義的常數,this可以呼叫本類別中的方法和屬性。
區別:
self呼叫的是類,而$this呼叫的則是實例化的物件。
(推薦教學:php教學)
#下面我們來詳細說明:
1、self可以存取本類別中的靜態屬性和靜態方法,可以存取父類別中的靜態屬性和靜態方法。用self時,可以不用實例化。
程式碼範例:
class self_test { static $instance; public function __construct(){ self::$instance = 'instance';//静态属性只能通过self来访问 } public function tank(){ return self::$instance;//访问静态属性 } } $str = new self_test(); echo $str->tank();
結果輸出:
instance
2、self可以存取const定義的常數
程式碼範例:
class self_test { const NAME = 'tancy'; public function tank(){ return self::NAME; } } $str = new self_test(); echo $str->tank();
三、this可以呼叫本類別中的方法和屬性,也可以呼叫父類別中的可以呼叫的方法和屬性,除了靜態屬性和const常數,基本上都可以使用this呼叫。
程式碼範例:
class self_test { public $public; private $private; protected $protected; public function __construct(){ $this->public = 'public'; $this->private = 'private'; $this->protected = 'protected'; } public function tank(){ return $this->public; } public function dell(){ return $this->private; } public function datesrt(){ return $this->protected; } } $str = new self_test(); echo $str->tank(); echo "</br>"; echo $str->dell(); echo "</br>"; echo $str->datesrt();
結果:
public private protected
總結:self是引用靜態類別的類別名,而$this是引用非靜態類別的實例名。
以上是php中this和self的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!