php靜態變數

2021-10-10 08:42:33 字數 1707 閱讀 9361

在函式執行完後,變數值仍然儲存,並沒有變回初始設定的值0。

<?php 

function

test()

test()

;test()

;test()

;?>

結果:

1

23

可以發現a設定靜態變數之後,每次$a的值都儲存下來了。我剛開始還以為這個變數變成了全域性變數,測試發現這個變數$a依然只能在函式裡呼叫,在函式外是不能呼叫的。

我們再來看看函式裡變數不設定static:

<?php 

function

test()

test()

;test()

;test()

;?>

結果:

1

11

作用:1,類的屬性或方法可以通過類名訪問 2,呼叫類之後,變數值不變。

一,通過類名訪問例子:

<?php 

class

test

}echo test::$a

;?>

輸出:

0
不指定static是無法通過類名呼叫的:

二,儲存值

類裡的static變數值儲存:

<?php 

class

test}$a

=new

test()

;echo test::$a

."\n";$a

=new

test()

;echo test::$a

."\n";$a

=new

test()

;echo test::$a

."\n"

;?>

輸出

1

23

每次new乙個test類,都會觸發__construct()魔術方法讓$a的值加一,變數$a值的變化都儲存下來了。

類裡的方法裡的static變數值會儲存:

<?php 

class

test

}echo test:

:add()

;echo test:

:add()

;echo test:

:add()

;echo test:

:add()

;?>

結果:

123

4

總結:作用就是讓static修飾變數在所在域的值儲存下來。

php裡面只有全域性作用域和函式作用域,而static修飾全域性變數域裡的變數沒有意義,因為在全域性變數域裡面變數值本來就會儲存,不會像函式一樣,每次呼叫值都會變回初始值。如下:

學習自:php之static靜態變數詳解

php 靜態變數static

靜態變數只存在於函式作用域內,也就是說,靜態變數只存活在棧中。一般的函式內變數在函式結束後會釋放,比如區域性變數,但是靜態變數卻不會。就是說,下次再呼叫這個函式的時候,該變數的值會保留下來。只要在變數前加上關鍵字static,該變數就成為靜態變數了。functiontest 第一次執行,nm tes...

靜態變數和非靜態變數

class string1 a和b編譯報錯,can not make a static referrence to no static filed s3,s4 分析 string s1 pingguo string s2 xiangjiao string s3 new string lizi str...

PHP的靜態變數管理

php的靜態變數需要集中管理,比如一些系統標識或者型別標識。我的乙個想法是用型別類來管理。乙個型別基類 author jixiaolong todo 型別基類 class typebase function destruct modify by jixiaolong 2013 4 5 public ...