PHP自学之路------static,global用法
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+=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;
 - ?>
 
注意:全局变量只能先定义,再进行初始化,不能直接初始化,或初始化和定义写到一起。
2、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)写法是错误的,但是因为创建了对象,被调用
 - ?>
 
                    
                
                
            
        
浙公网安备 33010602011771号