一、使用static靜態變量場景:
stadic使用場景.png
1、什么是全局變量?
在程序中都可以使用的變量稱為全局變量。
<?php
global $global_nums;
//初始化
$global_nums = 0;
Class Child {
public $name;
function __construct($name) {
$this -> name = $name;
}
public function join_game() {
//聲明一下使用全局變量
global $global_nums;
$global_nums++;
echo $this -> name."加入游戲<br/>";
}
}
$child1 = new Child("lizzy");
$child1 -> join_game();
$child2 = new Child("zxm");
$child2 -> join_game();
$child3 = new Child("hahha");
$child3 -> join_game();
echo "共".$global_nums."人參加游戲";
?>
2、什么是靜態變量?
基本用法:
(1)在類中定義靜態變量:
訪問修飾符(如public)static $變量名;
(2)如何訪問靜態變量:
a、如果在類中訪問,有兩種方法:
self::靜態變量名;
b、如果再類外訪問:只有一種方法,
類名::$靜態變量名;
注意:php中靜態變量不能用this訪問,不能用對象去訪問。
<?php
Class Child {
public $name;
//定義并初始化一個靜態變量
public static $nums=0;
function __construct($name) {
$this -> name = $name;
}
public function join_game() {
//引用靜態變量
self::$nums++;
echo $this -> name."加入游戲<br/>";
}
}
$child1 = new Child("lizzy");
$child1 -> join_game();
$child2 = new Child("zxm");
$child2 -> join_game();
$child3 = new Child("hahha");
$child3 -> join_game();
echo "共".Child::$nums."人參加游戲";
?>
靜態變量小結.png
二、靜態方法:
靜態方法也叫類方法,靜態方法是屬于所有對象實例的,形式如下:訪問修飾符(如public) static function 方法名() { }
注意:
1、 靜態方法中不能訪問非靜態屬性(變量),也就是static方法中不能用this 訪問,無法識別this具體是哪個。
2、普通的成員方法,既可以操作非靜態變量,也可以操作靜態變量。
在類外部訪問: 類名::類方法名 或者 對象名->類方法名
在類內部訪問: 類名::類方法名 或者 self::類方法名
需求:當我們操作靜態變量的時候,可以考慮使用靜態方法,比如統計所有學生交的學費。
<?php
class Student {
public static $fee;
public $name;
//構造函數
function __construct($name) {
$this -> name = $name;
}
public static function startSchool($inputFee) {
self::$fee += $inputFee;
}
//獲取總學費
public static function getAllFee() {
return self::$fee;
}
}
//1、通過類名調用靜態方法
// Student::startSchool(340);
//2、通過對象調用靜態方法
$stu1 = new Student("lizzy");
$stu1 -> startSchool(340);
$stu2 = new Student("zxm");
$stu2 -> startSchool(200);
echo "總學費是:".Student::getAllFee();
?>
靜態方法小結.png