您的位置:首页 > 编程语言 > PHP开发

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

2013-05-19 16:35 288 查看

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)写法是错误的,但是因为创建了对象,被调用
?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  global static