溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

php類中static與self的使用區(qū)別是什么

發(fā)布時(shí)間:2021-06-21 09:16:22 來源:億速云 閱讀:135 作者:chen 欄目:開發(fā)技術(shù)

這篇文章主要講解了“php類中static與self的使用區(qū)別是什么”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“php類中static與self的使用區(qū)別是什么”吧!

使用 self:: 或者 __CLASS__ 對(duì)當(dāng)前類的靜態(tài)引用,取決于定義當(dāng)前方法所在的類:

使用 static:: 不再被解析為定義當(dāng)前方法所在的類,而是在實(shí)際運(yùn)行時(shí)計(jì)算的。也可以稱之為“靜態(tài)綁定”,因?yàn)樗梢杂糜冢ǖ幌抻冢╈o態(tài)方法的調(diào)用。

靜態(tài)綁定是PHP 5.3.0,增加的一個(gè)功能 用于在繼承范圍內(nèi)引用靜態(tài)調(diào)用的類

php類中static和self的區(qū)別,php類的定義中經(jīng)常能看到self和static,在運(yùn)行的時(shí)候經(jīng)常發(fā)現(xiàn)結(jié)果并沒有區(qū)別,但是肯定不是沒有區(qū)別,因?yàn)闆]有區(qū)別為什么會(huì)有兩個(gè)呢?

 一、兩者區(qū)別

static采用的是延時(shí)綁定

所以會(huì)導(dǎo)致static能準(zhǔn)確知道是父類還是子類的調(diào)用

舉個(gè)例子,這就說明static是個(gè)聰明的小朋友,他家里的親戚他都能準(zhǔn)確的認(rèn)識(shí)

而self是個(gè)有點(diǎn)笨笨的小朋友,他只認(rèn)識(shí)你自己的父母

二、代碼看不同

由下面代碼可以看出

self指向的是定義他的類,也就是他只認(rèn)識(shí)自己的父母

static指向的是調(diào)用他的類,也就是他可以認(rèn)出自己的親戚

<?php
class parents
{
    protected static $name = '我是你父母';
 
    public static function who_self()
    {
        return self::$name;
    }
 
    public static function who_static()
    {
        return static::$name;
    }
 
    public static function get_self()
    {
        return new self();
    }
 
    public static function get_static()
    {
        return new static();
    }
}
 
class kinsfolk extends parents
{
    protected static $name = '我是你親戚';
}
 
var_dump(kinsfolk::who_self()); //我是你父母
var_dump(kinsfolk::who_static()); //我是你親戚
var_dump(kinsfolk::get_self()); //object(parents)#1 (0) {}
var_dump(kinsfolk::get_static()); //object(kinsfolk)#1 (0) {}

簡(jiǎn)單通俗的來說,

self就是寫在哪個(gè)類里面, 實(shí)際調(diào)用的就是這個(gè)類.

static代表使用的這個(gè)類, 就是你在父類里寫的static,然后被子類覆蓋,使用的就是子類的方法或?qū)傩?/p>

感謝各位的閱讀,以上就是“php類中static與self的使用區(qū)別是什么”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)php類中static與self的使用區(qū)別是什么這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎ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)容。

AI