PHP中静态变量、成员和方法

  作者:bea

这篇文章主要简单说说PHP中关键字static,它可以应用在变量、类和方法上,还会涉及到作用域限定操作符(::)和它在面向对象中的含义。 静态变量: 静态变量是只存在于函数作用域的变量,不过,在函数执行完成以后,这个变量的值不会丢失,也就是说,在下一次调用这个函数的时候,变量仍然会记得原来的值。 将某个变量定义为静态变量只要在这个变量前加上关键字static就可以了。如下代码: function demo(){ static $o
这篇文章主要简单说说PHP中关键字static,它可以应用在变量、类和方法上,还会涉及到作用域限定操作符(::)和它在面向对象中的含义。

静态变量:
静态变量是只存在于函数作用域的变量,不过,在函数执行完成以后,这个变量的值不会丢失,也就是说,在下一次调用这个函数的时候,变量仍然会记得原来的值。
将某个变量定义为静态变量只要在这个变量前加上关键字static就可以了。如下代码:
function demo(){
static $one = 1;
$one+=1;
echo $one."
";
}
现在我们来调用上面写的PHP代码:
demo();
demo();
demo();
在上面的代码中我们调用了3次函数demo();他的输出结果为:
2
3
4 奇怪了为什么输出结果不是:
2
2
2 原因为我们在申明函数demo的时候将变量$one申明为了一个静态变量,也就是说在函数demo调用完后,变量$one的值没有变化掉,他是保存在内存当中的,当我们再次调用函数demo的时候$one的值就是前一次调用完后$one的值。

静态成员和静态方法:
在一个类中,在类的成员属性和成员方法名前加关键字static就将这个成员属性或成员方法申明为了静态的。例如如下代码:
class demo{
public static $one;

function getOne(){
self::$one = "This is a demo";
echo self::$one;
}
}

$demo1 = new demo();
$deom->getOne();
上面代码的输出结果为:
This is a demo
我们将成员属性$one申明为了类中静态成员属性,静态成员属性是在类的所有实例之间共享的,这点非常重要,所以我们在类中调用静态成员变量$one用的是self而不是$this
$this代表的是当前的实例化对象。
这里最值得大家注意的是使用self访问类的成员属性的时候在成员属性前加$符号。
静态的成员方法和静态的成员属性基本没有什么大的区别。大家可以自己查阅相关的资料。

申明:本文为原创作品,转载请注明来自信鸽网 网址http://www.xinge360.com 有用  |  无用

猜你喜欢