首頁  >  文章  >  後端開發  >  static關鍵字在PHP的使用詳解

static關鍵字在PHP的使用詳解

韦小宝
韦小宝原創
2018-03-06 11:43:501567瀏覽

在PHP的一個類別中,帶有static關鍵字的方法和屬性被稱為靜態方法和靜態屬性,這樣的方法和屬性可以透過類別直接訪問,而不需要透過類別對應的實例來進行訪問,本篇文章就講述了static關鍵字在PHP中是如何使用的,還沒懂static關鍵字的同學可以一起看看哦!

  php中除了常規類別和方法的使用,存取控制之外,還有靜態關鍵字static,靜態變數可以是局部變數也可以是全域變量,當一個程式段執行完畢時,靜態變數並沒有消失,它依然存在於記憶體中,下次在定義時還是以前的值,常用於遞歸或子函數中保留之前的值,可以用來定義變數和方法,作用就不具體說了,說一下使用方式,下面簡單的程式碼:

class Human{
     public $name;
     protected $height;
 
     public static $sValue="Static Value in Human";
     public function eat($food){
         echo $this->name . "'s eating ". $food. "\n";
     }
}
 class Me extends Human
 {
     public $team="lsl";
     private $age="23";
 
     public static $president="zzy";
 
     public static function changePresident($newPrsdt){
         static::$president = $newPrsdt;
         echo parent::$sValue . "<br />";
     }
     //静态变量和方法操作
     private static $a="abc";
     public static function abc(){
         echo "<br />".self::$a;
         self::$a.="def";
    }
}
echo Me::$president. "\n";
Me::changePresident("web");
echo Me::$president. "<br />"; 
Me::abc();
Me::abc();


先定義了一個人類Human,然後定義一個類別Me繼承了Human,則Human裡面的成員都可以透過Me的物件來使用了,並且整個使用過程中成員變數的值都是有效的,根據程式碼可以看到:靜態變數的值改變之後下次再呼叫就是改變之後的了,如果是普通變數則無法實現,只能是透過物件改變才有效,而透過類別內部的方法是無法改變的,透過最後兩行程式碼更容易看出,呼叫了2次方法abc後靜態變數$a的值就改變了,靜態變數自己想一下就可以理解了,用途也很廣泛,以下總結幾點靜態關鍵字相關的規則:

1、一般靜態屬性用於保存類別的公有資料

#2、靜態方法內部只能存取靜態屬性,包括本類別和父類的

3、靜態成員不需要實例化物件就可以存取

#4、在本類別內部存取靜態屬性用self或static關鍵字訪問,後面帶上的變數要包括$,例如: self::$a或static::$a

#5、訪問父類靜態屬性使用parent,如:parent ::$name

6、在類別外部存取靜態變數或方法時使用類別名稱直接訪問,無需實例化。如:Me::$pan和Me::abc()

具體的要點就這麼多了

##沒懂static:

static靜態變數與普通變數的差異分析

以上是static關鍵字在PHP的使用詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn