静态变量定义
静态变量是当前类的所有对象共享的变量,任何一个该类的对象去访问它时,取得的都是相同的值,同样任何一个该类的对象去修改它时,也时同样被修改
定义静态变量
- 访问修饰符 static 静态属性名;
- static 访问修饰符 静态属性名;
两种方式都可以
访问静态变量
-
在类的内部访问:有两种方式
- self::静态属性名;
- 类名::$静态属性名;
-
在类的外部访问
如果是在类的外部访问今天属性,静态属性需要是public,否则也不能直接访问,访问的形式是 类名::$属性名
$thishe self 的区别
- 使用方式不同
- self::
- $this->
- self是类的范畴指向类,$this是对象实例,指向对象实例
静态变量的使用注意事项
- 如果在类的内部去使用静态变量,有两种形式,self::$静态变量, 类名::$静态变量, 静态属性可以是public、protected、private
- 在类的外部访问静态属性时 只能是类名::$静态属性名,要求是public
- 静态变量可以在定义时,直接初始化,普通的成员属性也可以
需求:
玩游戏时,当有人加入游戏时加一,最后统计有多少人加入游戏
优化前
<?php //玩游戏时,当有人加入游戏时加一,最后统计有多少人加入游戏 class Game{ public $name ; public $num = 0; public function __construct($name){ $this->name = $name; } public function playGame(){ echo $this->name.'<br> 加入游戏'; global $num ; $num++; } } $play1 = new Game('张三'); $play2 = new Game('李四'); $play3 = new Game('王五'); $play4 = new Game('赵六'); $play1->playGame(); $play2->playGame(); $play3->playGame(); $play4->playGame(); echo '总共有' . $num .'个人加入游戏'; ?>
对代码进行优化!
静态变量:静态变量是属于所有对象,因此可以被所有的对象共享‘
<?php //玩游戏时,当有人加入游戏时加一,最后统计有多少人加入游戏 class Game{ public $name ; public static $num = 0; public function __construct($name){ $this->name = $name; } public function playGame(){ echo $this->name.'<br> 加入游戏'; //在类中调用静态变量的方法是self::变量名 self::$num++ ; } //定义个统计方法 public function count1(){ echo '总共有' . self::$num .'个人加入游戏'; } } $play1 = new Game('张三'); $play2 = new Game('李四'); $play3 = new Game('王五'); $play4 = new Game('赵六'); $play1->playGame(); $play2->playGame(); $play3->playGame(); $play4->playGame(); $play4->playGame(); $play4->count1();?>
静态方法内存图
评论前必须登录!
注册