關於PHP的static 靜態 變數

2021-06-03 04:59:14 字數 805 閱讀 7630

首先明確一下static在語法上的定義:

php中的類中,靜態變數前要加static關鍵字修飾,而例項變數前則不加。

靜態變數是什麼:

靜態變數可以直接用類名加::呼叫,而不需要去例項化類,靜態變數的生命週期取決於類的生命週期,靜態變數一旦被呼叫,就會始終存在記憶體中,直到程式結束之後,靜態變數才會被登出。靜態變數亦有作用域,在作用域之外不能使用。

我們看一段**

class test

static public function getvar2()

}$t = new test();

echo $t->getvar1();

echo "

";echo test::$var2;

echo "

";test::getvar2();

echo test::$var2;

上面的例子輸出結果為:

instance var

static var

new static var

在上面的例子中,我們定義了乙個test類,然後定義了兩個變數,例項變數$var1和靜態變數$var2,兩個類方法,例項方法getvar1()和靜態方法getvar2()。

我們可以看到,例項變數需要首先將該類例項化,才能用類例項去訪問該變數,包括賦值以及做邏輯運算,而靜態變數則不需要類例項,可以直接用類名加::訪問。

什麼時候用靜態變數:

如果乙個變數是宣告在類中,變數在整個程式的執行過程中都可能需要呼叫,變數的值是很大的字串或者陣列或者其他內容,中間幾乎不會改變該變數的值

PHP的延遲靜態繫結 static

在舊版php中返回本類的乙個例項使用的return new self 但是這個方法有很大的弊端,就是self指的是解析上下文而不是呼叫的上下文。abstract class father class son1 extends father son1 create 也就是說上述 中子類呼叫create...

PHP的static靜態變數

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

PHP靜態延遲繫結 static

php 5.3 1,this永遠代表所在類的物件?不是 2,self用於代表所在類麼?是,永遠代表所在類的物件!看邏輯 class p got eof at end of input echo self where class c extends p echo p saywhere aaa echo...