## 静态变量
所有的对象都共享一个变量
![](https://box.kancloud.cn/f03f6af35bc9e37749a031e34d09aced_377x319.png)
1.全局变量
在任何地方都可以使用的变量,叫做全局变量。
global $a; $a=0; 全局变量要先定义,后赋值
![](https://box.kancloud.cn/f837fb58a06aa858e622810c59d42560_929x303.png)
### 1.定义
修饰符 static 变量名;
### 2.访问
类的外部访问:**类名::变量名**
类内部访问:**self::变量名 或 类名::变量名**
3. 存在方式
静态变量不是在堆区里面,在堆区存储的是该变量的地址
~~~
<?
echo "<meta charset='utf-8'>";
class Child{
public $name;
//定义并初始化静态变量
public static $num=0;
function __construct($name){
$this->name=$name;
}
public function join(){
//使用静态变量
self::$num+=1;
echo $this->name."加入游戏";
}
}
$c1=new Child("周迅");
$c1->join();
$c2=new Child("马云");
$c2->join();
echo $c1::$num;
~~~
![](https://box.kancloud.cn/263d2c4de386124f8cd21b40e2addb9e_947x477.png)
## 静态方法
**在操作静态变量的时候使用静态方法**
### 定义:
修饰符 static function 方法名(){.......}
### 特点:
静态方法中不能访问非静态属性
类外部: 类名::方法名 或 对象名->方法名
类内部: self:方法名 或 类名::方法名
~~~
<?
echo "<meta charset='utf-8'>";
class Child{
public $name;
//定义并初始化静态变量
public static $fee=0;
public static function counts($ifee){
self::$fee+=$ifee;
}
}
$c2=new Child("马云");
$c1=new Child("马云");
$c1::counts(300);
$c2::counts(300);
echo Child::$fee;
~~~