91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

new self與new static在PHP中有什么不同

發布時間:2021-01-13 15:26:23 來源:億速云 閱讀:181 作者:Leah 欄目:開發技術

這期內容當中小編將會給大家帶來有關new self與new static在PHP中有什么不同,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

區別如下:

首先闡明結論,在PHP中 self指向定義了當前被調用方法的類, static指向調用當前靜態方法的類。

接下來通過一個例子來證明上面的結果

class A 
{
 public static $_a = 'Class A';

 public static function echoProperty()
 {
 echo self::$_a . PHP_EOL;
 }
}

class B extends A 
{
 public static $_a = 'Class B';
}

$obj = new B();
B::echoProperty();//輸出 Class A

之所以會這樣是因為使用self:: 或者__CLASS__對當前類的靜態引用,取決于定義被調用方法所在的類,將上面Class A的方法echoProperty做一下修改變成:

class A 
{
 public static $_a = 'Class A';

 public static function echoProperty()
 {
 echo static::$_a . PHP_EOL;
 }
}
//再次調用B::echoProperty將輸出 'CLASS B'

為了避免上面第一個例子中看到的子類重寫父類的靜態屬性后,使用繼承來的方法仍然訪問父類的靜態屬性, PHP5.3增加了一個新的語法:后期靜態綁定(Late static binding), 使用static關鍵字替代self關鍵字,使得static指向與get_called_class()返回的相同的類,即當前調用靜態方法的類, 該關鍵字對于靜態方法的訪問同樣有效。

下面的例子更好的說明了new self()和new static()之間的差異(后者使用了PHP的后期靜態綁定指向調用方法的當前類)

class A 
{
 public static function get_self() 
 {
 return new self();
 }

 public static function get_static() 
 {
 return new static();
 }
}

class B extends A {}

echo get_class(B::get_self()); // A
echo get_class(B::get_static()); // B
echo get_class(A::get_self()); // A
echo get_class(A::get_static()); // A

上述就是小編為大家分享的new self與new static在PHP中有什么不同了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

德惠市| 四会市| 潼关县| 灵丘县| 乌拉特后旗| 宿松县| 海伦市| 巴楚县| 富宁县| 樟树市| 郴州市| 微博| 开平市| 怀集县| 黔东| 双峰县| 深州市| 犍为县| 南投市| 平湖市| 昭觉县| 尼勒克县| 沁水县| 九江县| 巴中市| 甘泉县| 格尔木市| 专栏| 泾源县| 周至县| 遵义县| 广州市| 瑞金市| 佛学| 大荔县| 宜丰县| 隆德县| 龙州县| 同江市| 彰化市| 南丰县|