文章出處
文章列表
通過函數改變內部屬性的值:
1 <?php 2 3 class Human{ 4 public $name; 5 protected $height; 6 public $weight; 7 private $isHungry = true; 8 9 } 10 11 12 class NbaPlayer extends Human{ 13 14 public $team="Bull"; 15 public $playerNumber="23"; 16 17 public $president = "David Stern"; 18 19 public function changePresident($newPrsdt) { 20 $this->president = $newPrsdt; 21 } 22 } 23 24 $jordan = new NbaPlayer("Jordan","198cm","98kg","Bull","23"); 25 $james = new NbaPlayer("James","203cm","120kg","Heat","6"); 26 27 $jordan->changePresident("Adan Silver"); 28 echo "Jordan:".$jordan->president ."<br/>"; 29 echo "James:".$james->president ."<br/>";
這時,通過 $jordan->changePresident("Adan Silver"); 來改變jordan的president,
如何同時改變jordan和james的president的值呢,這就需要使用Static靜態變量了
1 <?php 2 3 class Human{ 4 public $name; 5 protected $height; 6 public $weight; 7 private $isHungry = true; 8 9 } 10 11 12 class NbaPlayer extends Human{ 13 14 public $team="Bull"; 15 public $playerNumber="23"; 16 //靜態屬性定義在訪問控制關鍵字后面添加static關鍵字即可 17 public static $president = "David Stern"; 18 //靜態方法實在function前面加上static 19 public static function changePresident($newPrsdt) { 20 //在類定義使用靜態成員的時候,用self關鍵字后面跟著::操作符 21 //在訪問靜態成員屬性的時候,::后面需要跟$符號 22 self::$president = $newPrsdt; 23 } 24 } 25 //在類定義外部訪問靜態屬性,我們可以用類名加::操作符來訪問類的靜態成員 26 echo NbaPlayer::$president." before changed"."<br/>"; 27 NbaPlayer::changePresident("Adam Silver"); 28 echo NbaPlayer::$president." after changed" . "<br/>";
輸出結果:
1 David Stern before changed 2 Adam Silver after changed
然后我們再討論子類靜態函數調用父類的靜態變量
1 <?php 2 3 class Human{ 4 public $name; 5 protected $height; 6 public $weight; 7 private $isHungry = true; 8 public static $sValue= "static value in Human class "."<br/>"; 9 10 } 11 12 class NbaPlayer extends Human{ 13 14 public $team="Bull"; 15 public $playerNumber="23"; 16 private $age = "40"; 17 //靜態屬性定義在訪問控制關鍵字后面添加static關鍵字即可 18 public static $president = "David Stern"; 19 //靜態方法實在function前面加上static 20 public static function changePresident($newPrsdt) { 21 //在類定義使用靜態成員的時候,用self或者static關鍵字后面跟著::操作符 22 //在訪問靜態成員屬性的時候,::后面需要跟$符號 23 self::$president = $newPrsdt; 24 //使用parent關鍵字就能夠訪問父類的靜態成員 25 echo parent::$sValue; 26 //靜態函數不能訪問動態的屬性 27 //echo->age; 這里會出錯 28 } 29 } 30 //在類定義外部訪問靜態屬性,我們可以用類名加::操作符來訪問類的靜態成員 31 echo NbaPlayer::$president." before changed"."<br/>"; 32 NbaPlayer::changePresident("Adam Silver"); 33 echo NbaPlayer::$president." after changed" . "<br/>"; 34 //輸出父類的靜態變量 35 echo Human::$sValue;
輸出為:
David Stern before changed static value in Human class Adam Silver after changed static value in Human class
總結起來就六點:
1、靜態屬性用于保存類的公有數據 2、靜態方法里面只能訪問靜態屬性 3、靜態成員不需要實例化對象就可以訪問 4、類的內部可以通過self或者static關鍵字訪問自身靜態成員 5、可以通過parent關鍵字訪問父類的靜態成員 6、可以通過類的名稱在類的定義外部訪問靜態成員
文章列表
全站熱搜