PHP自学之路------static,global用法

本文介绍了PHP中全局变量和静态变量的基本用法及注意事项。详细解释了全局变量的定义、初始化方式及其在类中的使用场景,并通过实例展示了静态变量的特点及访问方法。

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






评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值