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)写法是错误的,但是因为创建了对象,被调用
    ?>






  • 相关阅读:
    MKMapVIew学习系列2 在地图上绘制出你运行的轨迹
    WPF SDK研究 Intro(6) WordGame1
    WPF SDK研究 Intro(3) QuickStart3
    WPF SDK研究 Layout(1) Grid
    WPF SDK研究 目录 前言
    WPF SDK研究 Intro(7) WordGame2
    WPF SDK研究 Layout(2) GridComplex
    对vs2005创建的WPF模板分析
    WPF SDK研究 Intro(4) QuickStart4
    《Programming WPF》翻译 第6章 资源
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3087729.html
Copyright © 2011-2022 走看看