php中除了常規類和方法的使用,訪問控制之外,還有靜態關鍵字static,靜態變量可以是局部變量也可以是全局變量,當一個程序段執行完畢時,靜態變量並沒有消失,它依然存在於內存中,下次在定義時還是以前的值,常用於遞歸或子函數中保留之前的值,可以用來定義變量和方法,作用就不具體說了,說一下使用方式,下面簡單的代碼:
1 class Human{ 2 public $name; 3 protected $height; 4 5 public static $sValue="Static Value in Human"; 6 public function eat($food){ 7 echo $this->name . "'s eating ". $food. "\n"; 8 } 9 } 10 11 class Me extends Human 12 { 13 public $team="lsl"; 14 private $age="23"; 15 16 public static $president="zzy"; 17 18 public static function changePresident($newPrsdt){ 19 static::$president = $newPrsdt; 20 echo parent::$sValue . "<br />"; 21 } 22 23 //靜態變量和方法操作 24 private static $a="abc"; 25 26 public static function abc(){ 27 echo "<br />".self::$a; 28 self::$a.="def"; 29 } 30 } 31 32 echo Me::$president. "\n"; 33 Me::changePresident("web"); 34 echo Me::$president. "<br />"; 35 36 37 38 Me::abc(); 39 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()
具體的要點就這么多了