zoukankan      html  css  js  c++  java
  • 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)写法是错误的,但是因为创建了对象,被调用
    ?>






  • 相关阅读:
    lintcode42- Maximum Subarray II- medium
    leetcode53- Maximum Subarray- easy
    leetcode50- Pow(x, n)- medium
    leetcode23- Merge k Sorted Lists- hard
    leetcode21- Merge Two Sorted Lists- easy
    lintcode121- Word Ladder II- hard
    lintcode107- Word Break- medium
    lintcode10- Permutation Index II- medium
    AM335x关于LCD屏幕的时钟PLL配置 分类: TI-AM335X 2015-06-16 18:32 341人阅读 评论(0) 收藏
    用DriverStudio开发USB驱动程序 分类: USB OTG驱动 2015-06-12 10:34 376人阅读 评论(0) 收藏
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3087729.html
Copyright © 2011-2022 走看看