PHP的靜態變數介紹

2021-06-27 00:22:18 字數 4542 閱讀 9753

2010-09-01

靜態變數只存在於函式作用域內,也就是說,靜態變數只存活在棧中。一般的函式內變數在函式結束後會釋放,比如區域性變數,但是靜態變數卻不會。就是說,下次再呼叫這個函式的時候,該變數的值會保留下來。

只要在變數前加上關鍵字static,該變數就成為靜態變數了。

01<?php

02functiontest()

03

08

09// 第一次執行,$nm = 2

10test();

11// 第一次執行,$nm = 4

12test();

13// 第一次執行,$nm = 8

14test();

15?>

程式執行結果:

12

24

38

函式test()執行後,變數$nm的值都儲存了下來了。

在class中經常使用到靜態屬性,比如靜態成員、靜態方法。

program list:類的靜態成員

靜態變數$nm屬於類nowamagic,而不屬於類的某個例項。這個變數對所有例項都有效。

::是作用域限定操作符,這裡用的是self作用域,而不是$this作用域,$this作用域只表示類的當前例項,self::表示的是類本身。

01<?php

02classnowamagic

03

11}

12

13$nminstance1=newnowamagic();

14$nminstance1-> nmmethod();

15

16$nminstance2=newnowamagic();

17$nminstance2-> nmmethod();

18?>

程式執行結果:

13

25

program list:靜態屬性

01<?php

02classnowamagic

03

10}

11

12classarticleextendsnowamagic

13

18}

19

20// 通過作用於限定操作符訪問靜態變數

21print nowamagic::$nm."

";

22

23// 呼叫類的方法

24$nowamagic=newnowamagic();

25print$nowamagic->nmmethod() ."

";

26

27print article::$nm."

";

28

29$nmarticle=newarticle();

30print$nmarticle->nmmethod() ."

";

31?>

程式執行結果:

1www.nowamagic.net

2www.nowamagic.net

3www.nowamagic.net

4www.nowamagic.net

program list:簡單的靜態構造器

php沒有靜態構造器,你可能需要初始化靜態類,有乙個很簡單的方法,在類定義後面直接呼叫類的demonstration()方法。

01<?php

02functiondemonstration()

03

06

07classmystaticclass

08

19} mystaticclass::mystaticinit();//call the static constructor

20

21echomystaticclass::$mystaticvar;

22//this is the result of demonstration()

23?>

程式執行結果:

1this 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 ...