一、下面是全局变量使用:
<?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+=1;
echo $this->name."加入堆雪人游戏<br/>";
}
}
//建立3个小孩
$child1=new Child("aaa");
$child1->join_game();
$child2=new Child("bbb");
$child2->join_game();
$child3=new Child("ccc");
$child3->join_game();
echo $global_nums;
?>
注意:全局变量只能先定义,再进行初始化,不能直接初始化,或初始化和定义写到一块儿。
二、static 静态变量使用
<?php
class Child{
public $name;
public static $nums=0;
function __construct($name){
$this->name=$name;
}
public function join_game(){
//类内部访问 2中以下
//Child::$nums+=1;
self::$nums+=1;
echo $this->name."加入堆雪人游戏<br/>";
}
}
//建立3个小孩
$child1=new Child("aaa");
$child1->join_game();
$child2=new Child("bbb");
$child2->join_game();
$child3=new Child("ccc");
$child3->join_game();
$child4=new Child("ddd");
$child4->join_game();
//外部访问
echo Child::$nums;
?>
静态变量只能定义在类中,使该类的全部对象共享的变量,任何一个该类的对象去访问他时,取到的数值都是同样的,一样任何一个该类的变量去修改他时,修改的都是同一个变量。
如何访问静态变量:
在类外部:类名::$类变量名
在类内部:self::$类变量名 或者 类名::$类变量名
具体在内存的分配状况见下图:
下面是简单的实例,加深对上面的理解:
<?php
/*
//第一种状况
class Person{
public static $a=90;
}
echo Person::$a;
// 输出不会报错打印:90
*/
/*
//第二种状况“
class Person{
public static $a=900;
public function __construct(){
$this->a=45;//(1)
}
}
echo Person::$a;
//不会报错,输出900;(1)写法是错误的,可是由于没有建立对象,
//因此不会被调用,也就不会出错~
*/
//第三种状况“
class Person{
public static $a=9011;
public function __construct(){
$this->a=45;//(1)
}
}
$p1=new Person();
echo Person::$a;
//;(1)写法是错误的,可是由于建立了对象,被调用
?>