靜態變數只存在於函數作用域內,也就是說,靜態變數只存活在堆疊中。一般的函數內變數在函數結束後會釋放,例如局部變量,但是靜態變數卻不會。是說,下次再呼叫這個函數的時候,該變數的值會保留下來。
只要在變數前面加上關鍵字static,該變數就成為靜態變數了。
<?php function test() { static $nm = 1; $nm = $nm * 2; print $nm."<br />"; } // 第一次执行,$nm = 2 test(); // 第一次执行,$nm = 4 test(); // 第一次执行,$nm = 8 test(); ?>
程式運作結果:
2
4
8 4
8
test值的執行變數,了執行變數。 在class中常使用到靜態屬性,例如靜態成員、靜態方法。 Program List:類別的靜態成員靜態變數$nm屬於類別nowamagic,而不屬於類別的某個實例。這個變數對所有實例都有效。 ::是作用域限定運算符,這裡用的是self作用域,而不是$this作用域,$this作用域只表示類別的目前實例,self::表示的是類別本身。 view source print?<?php class nowamagic { public static $nm = 1; function nmMethod() { self::$nm += 2; echo self::$nm . '<br />'; } } $nmInstance1 = new nowamagic(); $nmInstance1 -> nmMethod(); $nmInstance2 = new nowamagic(); $nmInstance2 -> nmMethod(); ?>
5 5 5