php中this和self的有什么區別?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
php中this和self的區別是:self調用的是類,而$this調用的是實例化的對象。self可以訪問本類中的靜態屬性和靜態方法,以及const定義的常量,this可以調用本類中的方法和屬性。
區別:
self調用的是類,而$this調用的則是實例化的對象。
下面我們來詳細說明一下:
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的有什么區別的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。