2010-09-01
靜態變數只存在於函式作用域內,也就是說,靜態變數只存活在棧中。一般的函式內變數在函式結束後會釋放,比如區域性變數,但是靜態變數卻不會。就是說,下次再呼叫這個函式的時候,該變數的值會保留下來。
只要在變數前加上關鍵字static,該變數就成為靜態變數了。
01
<?php
02
function
test()
03
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
11
}
12
13
$nminstance1
=
new
nowamagic();
14
$nminstance1
-> nmmethod();
15
16
$nminstance2
=
new
nowamagic();
17
$nminstance2
-> nmmethod();
18
?>
程式執行結果:
1
3
2
5
program list:靜態屬性
01
<?php
02
class
nowamagic
03
10
}
11
12
class
article
extends
nowamagic
13
18
}
19
20
// 通過作用於限定操作符訪問靜態變數
21
print nowamagic::
$nm
.
"
";
22
23
// 呼叫類的方法
24
$nowamagic
=
new
nowamagic();
25
print
$nowamagic
->nmmethod() .
"
";
26
27
print article::
$nm
.
"
";
28
29
$nmarticle
=
new
article();
30
print
$nmarticle
->nmmethod() .
"
";
31
?>
程式執行結果:
1
www.nowamagic.net
2
www.nowamagic.net
3
www.nowamagic.net
4
www.nowamagic.net
program list:簡單的靜態構造器
php沒有靜態構造器,你可能需要初始化靜態類,有乙個很簡單的方法,在類定義後面直接呼叫類的demonstration()方法。
01
<?php
02
function
demonstration()
03
06
07
class
mystaticclass
08
19
} mystaticclass::mystaticinit();
//call the static constructor
20
21
echo
mystaticclass::
$mystaticvar
;
22
//this is the result of demonstration()
23
?>
程式執行結果:
1
this is the result of demonstration()
php靜態變數
在函式執行完後,變數值仍然儲存,並沒有變回初始設定的值0。function test test test test 結果 1 23可以發現a設定靜態變數之後,每次 a的值都儲存下來了。我剛開始還以為這個變數變成了全域性變數,測試發現這個變數 a依然只能在函式裡呼叫,在函式外是不能呼叫的。我們再來看看...
php 靜態變數static
靜態變數只存在於函式作用域內,也就是說,靜態變數只存活在棧中。一般的函式內變數在函式結束後會釋放,比如區域性變數,但是靜態變數卻不會。就是說,下次再呼叫這個函式的時候,該變數的值會保留下來。只要在變數前加上關鍵字static,該變數就成為靜態變數了。functiontest 第一次執行,nm tes...
PHP的靜態變數管理
php的靜態變數需要集中管理,比如一些系統標識或者型別標識。我的乙個想法是用型別類來管理。乙個型別基類 author jixiaolong todo 型別基類 class typebase function destruct modify by jixiaolong 2013 4 5 public ...