静态变量只存在于函数作用域内,也就是说,静态变量只存活在栈中。一般的函数内变量在函数结束后会释放,比如局部变量,但是静态变量却不会。就是说,下次再调用这个函数的时候,该变量的值会保留下来。
只要在变量前加上关键字static,该变量就成为静态变量了。
01 |
<?php |
02 |
function test()
|
03 |
{
|
04 |
static $nm = 1;
|
05 |
$nm = $nm * 2;
|
06 |
print $nm . "<br />" ;
|
07 |
}
|
08 |
|
09 |
// 第一次执行,$nm = 2
|
10 |
test();
|
11 |
// 第一次执行,$nm = 4
|
12 |
test();
|
13 |
// 第一次执行,$nm = 8
|
14 |
test();
|
15 |
?> |
程序运行结果:
1 |
2 |
2 |
4 |
3 |
8 |
函数test()执行后,变量$nm的值都保存了下来了。
在class中经常使用到静态属性,比如静态成员、静态方法。
Program List:类的静态成员
静态变量$nm属于类nowamagic,而不属于类的某个实例。这个变量对所有实例都有效。
::是作用域限定操作符,这里用的是self作用域,而不是$this作用域,$this作用域只表示类的当前实例,self::表示的是类本身。
01 |
<?php |
02 |
class nowamagic
|
03 |
{
|
04 |
public static $nm = 1;
|
05 |
|
06 |
function nmMethod()
|
07 |
{
|
08 |
self:: $nm += 2;
|
09 |
echo self:: $nm . '<br />' ;
|
10 |
}
|
11 |
}
|
12 |
|
13 |
$nmInstance1 = new nowamagic();
|
14 |
$nmInstance1 -> nmMethod();
|
15 |
|
16 |
$nmInstance2 = new nowamagic();
|
17 |
$nmInstance2 -> nmMethod();
|
18 |
?> |
程序运行结果:
1 |
3 |
2 |
5 |
转自:http://www.nowamagic.net/php/php_StaticVariable.php
相关推荐
计算机后端-PHP视频教程. php与mysql加强- 05. php加强57-static静态变量wmv.wmv
只要在变量前加上关键字static,该变量就成为静态变量了。 <?php function test() { static $nm = ; $nm = $nm * ; print $nm." "; } // 第一次执行,$nm = test(); // 第一次执行,$nm = test(); ...
分析了php中静态类与静态变量用法类的区别,创建对象$object = new Class(),然后使用”->”调用:$object->attribute/function,前提是该变量/方法可访问。直接调用类方法量:class::attribute/function,无论是静态/...
php中static 静态变量和普通变量的区别 在变量的前面加上static 就构成了静态变量(static 变量)。 static变量和普通变量的区别在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的...
静态变量只存在于函数作用域内,静态变量只存活在栈中。一般的函数内变量在函数结束后会释放,比如局部变量,但是静态变量却不会。... //这里定义并初始化一个静态变量 $nums public static $nums=0; func
使用静态局部变量的原因是它不能被外部使用,但是它的值依然在没此使用后保留。虽然使用全局变量可以实现相同的功能,但是它经常会造成意外
php中的变量作用范围的另一个重要特性就是静态变量(static 变量)。静态变量仅在局部函数域中存在且只被初始化一次,当程序执行离开此作用域时,其值不会消失,会使用上次执行的结果。
} } 但是php中并没有一个类似java中的静态构造器/静态块的东西,就没有合适的时机对其进行初始化了。 对于共有的成员还有办法解决,例如: class A { static public $child; } A::$child = new B()
static是定义一个静态对象或静态变量,关于static 定义的变量或类方法有什么特性我们看完本文章的相关实例后就见分晓了. 1. 创建对象$object = new Class(),然后使用”->”调用:$object->attribute/function,前提...
数据成员可以分静态变量、非静态变量两种. 静态成员:静态类中的成员加入static修饰符,即是静态成员.可以直接使用类名+静态成员名访问此静态成员,因为静态成员存在于内存,非静态成员需要实例化才会分配内存,所以静态...
本文实例讲述了PHP中静态变量的使用方法。分享给大家供大家参考,具体如下: 1.定义静态变量 public static $endpoint,$accessKeyId,$accessKeySecret,$bucket; 2.静态变量赋值 protected function _initialize()...
静态变量是指用static声明的变量,这种变量与局部变量的区别是,当静态变量离开了它的作用范围后,它的值不会自动消亡,而是继续存在,当下次再用到它的时候,可以保留最近一次的值。 下面举例: 复制代码 代码如下:...
在php中,访问类的方法/变量有两种方法: 1. 创建对象$object = new Class(),然后使用”->”调用:$object->attribute/function,前提是该变量/方法可访问。 2. 直接调用类方法/变量:class::attribute/function,...
本文实例讲述了php 函数中静态变量使用的问题。分享给大家供大家参考,具体如下: <?php function msg() { static $a = 0; echo $a++, ' '; } msg(); msg(); msg(); 上述代码,分别输出0,1,2 静态变量$a在...
定义:在全局变量前,加上关键字 static 该变量就被定义成为了一个静态全局变量。 特点: A、该变量在全局数据区分配内存。 B、初始化:如果不显式初始化,那么将被隐式初始化为0(自动变量是随机的,除非显式地初始化...