一、静态变量
<?php
/**
声明一个名为test的函数,测试在函数内部声明的静态变量的使用
*/
function test(){
static $a=0;
echo $a;
$a++;
}
test(); //第一次运行,输出0
test(); //第二次运行,输出1
test(); //第三次运行,输出2
test(); //第四次运行,输出3
?>
在上例中,将函数中的局部变量$a,使用static关键词声明为静态变量,并赋初值为0.函数在第一次执行时,静态变量$a经运算后,从初值0变为1.当函数第一次执行完毕后,静态变量$a并没有被释放,而是将结果保存在静态内存中。第二次执行时,$a从内存中获取上一次计算的结果1,继续计算,并将结果2存于静态内存空间中。以后每次函数执行时,静态变量将从自己的静态内存空间中获取前次的储存结果,并以此为初值进行计算。
二、static关键字的使用
类中的静态成员是不需要对象而是使用类名来直接访问的,格式如下所示:
类名::静态成员属性名; //在类的外部和成员方法中都可以使用这种方式访问静态成员属 性
类名::静态成员方法(); //在类的外部和成员方法中都可以使用这种方式访问静态成员方 法
在类中声明的成员方法中,也可以使用关键字“self”来访问其他静态成员。因为静态成员是属于类的,而不属于任何对象,所以不能用$this来引用它,而在PHP中给我们提供的self关键字,就是在类的成员方法中用来代表本类的关键字。格式如下所示:
self::静态成员属性名; //在类的成员方法中使用这种方式访问本类中的静态成员属性
self::静态成员方法名(); //在类的成员方法中使用这种方式访问本类中的静态成员方法
<?php
class MyClass{
static $count; //在类中声明一个静态成员属性count,用于统计对象被创建的次数
function __construct(){ //每次创建一个对象就会自动调用一次这个构造方法
self::$count++; //使用self访问静态成员count,使其自增1
}
static function getCount(){ //声明一个静态方法,在类外面直接使用类名就可以调用
return self::$count; //在方法中使用self访问静态成员并返回
}
}
MyClass::$count=0; //在类外面使用类名访问类中的静态成员,为其初始化赋值0
$myc1=new MyClass(); //通过myclass类创建第一个对象,在构造方法中将count累加1
$myc2=new MyClass(); //通过myclass类创建第二个对象,在构造方法中又将count累加1
$myc3=new MyClass(); //通过myclass类创建第三个对象,在构造方法中再次将count累加1
echo MyClass::getCount(); //在类外面使用类名访问类中的静态成员方法,获取静态属性的值3
echo "<br/>";
echo $myc3->getCount(); //通过对象也可以访问类中的静态成员方法,获取静态属性的值3
?>
代码运行结果为3 3
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。