您好,登錄后才能下訂單哦!
php中this和self的有什么區(qū)別?相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。
php中this和self的區(qū)別是:self調(diào)用的是類(lèi),而$this調(diào)用的是實(shí)例化的對(duì)象。self可以訪(fǎng)問(wèn)本類(lèi)中的靜態(tài)屬性和靜態(tài)方法,以及const定義的常量,this可以調(diào)用本類(lèi)中的方法和屬性。
區(qū)別:
self調(diào)用的是類(lèi),而$this調(diào)用的則是實(shí)例化的對(duì)象。
下面我們來(lái)詳細(xì)說(shuō)明一下:
1、self可以訪(fǎng)問(wèn)本類(lèi)中的靜態(tài)屬性和靜態(tài)方法,可以訪(fǎng)問(wèn)父類(lèi)中的靜態(tài)屬性和靜態(tài)方法。用self時(shí),可以不用實(shí)例化。
代碼示例:
class self_test { static $instance; public function __construct(){ self::$instance = 'instance';//靜態(tài)屬性只能通過(guò)self來(lái)訪(fǎng)問(wèn) } public function tank(){ return self::$instance;//訪(fǎng)問(wèn)靜態(tài)屬性 } } $str = new self_test(); echo $str->tank();
結(jié)果輸出:
instance
2、self可以訪(fǎng)問(wèn)const定義的常量
代碼示例:
class self_test { const NAME = 'tancy'; public function tank(){ return self::NAME; } } $str = new self_test(); echo $str->tank();
三、this可以調(diào)用本類(lèi)中的方法和屬性,也可以調(diào)用父類(lèi)中的可以調(diào)用的方法和屬性,除了靜態(tài)屬性和const常量,基本上都可以使用this調(diào)用。
代碼示例:
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();
結(jié)果:
public private protected
總結(jié):self是引用靜態(tài)類(lèi)的類(lèi)名,而$this是引用非靜態(tài)類(lèi)的實(shí)例名。
看完上述內(nèi)容,你們掌握php中this和self的有什么區(qū)別的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。