溫馨提示×

溫馨提示×

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

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

?PHP中的self與static的區別

發布時間:2021-09-03 19:41:12 來源:億速云 閱讀:171 作者:chen 欄目:大數據

這篇文章主要介紹“PHP中的self與static的區別”,在日常操作中,相信很多人在PHP中的self與static的區別問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”PHP中的self與static的區別”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

 

談PHP中的self與static

之前的文章中有介紹過self、static和parent的傳遞問題。今天,通過一個小實驗,我們來看看self和static操作變量的問題。

class A
{
   public static $name = "I'm A!";

   public function selfName()
   {
       echo self::$name;
   }

   public function staticName()
   {
       echo static::$name;
   }
}

class B extends A{
   public static $name = "I'm B!";
}

$b = new B();
$b->selfName(); // I'm A!
$b->staticName(); // I'm B!

class C extends A{
   public static $name = "I'm C!";

   public function selfName()
   {
       echo self::$name;
   }
}

$c = new C();
$c->selfName(); // I'm C!
$c->staticName(); // I'm C!
 

通過這個簡單的例子,我們可以看出兩點:

  1. self寫在哪個類里面,它固定指向的就是當前的這個類
  2. static就是哪個對象調用它,它指向的就是這個調用者

從代碼中我們可以看出,B類沒有重寫selfName()方法,所以B類調用selfName()時調用的是父類A的selfName()方法,self在這個方法中指向的是A類。而C類重寫了父類的selfName()方法,在調用C類的selfName()時,這里面的self指向的便是C類自己了。

static就比較簡單了,例子中都是由B類和C類來調用的A類的staticName()方法,根據誰調用就指向誰來看,輸出的結果符合我們的預期,B類對象指向的是B類,C類對象指向的是C類。


到此,關于“PHP中的self與static的區別”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

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

php
AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女