在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關鍵字在PHP的使用詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!