PHP 中的靜態變數
本文將介紹 PHP 靜態變數,解釋它們的特性,並演示在物件導向的上下文中訪問靜態變數的各種方法。
PHP 中的靜態變數
程式中的變數用於儲存以後可以在程式中使用的資料或值。變數可以儲存字元、數值、字串、記憶體地址等。
在 PHP 中,我們使用 $
美元符號後跟變數名稱來宣告或儲存值。
例子:
$name = "John Doe";
$marks = 90;
同樣,靜態變數是其範圍不結束於函式之外的變數。非靜態變數的作用域在函式退出後被銷燬。
我們可以使用 static
關鍵字宣告一個靜態變數。
例子:
static $name = "John Doe";
static $marks = 90;`
讓我們通過下面的演示來看看靜態變數的屬性。
程式碼示例:
function total_marks () {
static $marks = 90;
$marks ++;
print $marks;
print "<br />";
}
total_marks();
total_marks();
total_marks();
輸出:
91
92
93
上面的程式碼顯示靜態變數即使在函式結束後仍保留其值。對函式 total_marks()
有三種不同的呼叫,但即使在函式退出後 $marks
的值也不會被破壞。
在進行第二次和第三次函式呼叫時,該值不會重置為 90
。隨著先前的值被保留,它會繼續增加。
讓我們將上面的示例應用於非靜態變數。
示例程式碼:
function total_marks () {
$marks = 90;
$marks ++;
print $marks;
print "<br />";
}
total_marks();
total_marks();
total_marks();
輸出:
91
91
91
每次進行函式呼叫時,$marks
變數的值都會重置為 90
。它表明非靜態變數不保留其先前的值。
在 PHP 中使用 self
關鍵字訪問類中的靜態變數
我們可以使用 self
關鍵字來訪問類中的靜態變數。雙冒號 ::
用在 self
關鍵字之後,靜態變數緊隨其後。
this
關鍵字不適用於靜態變數,因為靜態變數不屬於物件。
例如,在一個類中,Student
建立一個靜態變數 $name
並分配一個值 John Doe
。在函式內部,who()
使用帶有雙冒號的 self
關鍵字來訪問靜態變數 $name
,最後,使用類的物件呼叫該函式。
示例程式碼:
class Student {
public static $name = "John Doe";
public function who() {
echo self::$name;
}
}
$obj = new Student;
$obj->who();
輸出:
John Doe
PHP 中使用類名訪問類外的靜態變數
可以直接訪問靜態變數,而無需建立類的例項。要訪問類外部的靜態變數,我們可以編寫類的名稱,後跟雙冒號(::
),後跟靜態變數的名稱。
例如,在一個類中,Student
像第一個方法一樣建立一個靜態變數。接下來,在類外寫入 Student:$name
以訪問靜態變數。
示例程式碼:
class Student {
public static $name = "John Doe";
}
echo Student::$name;
輸出:
John Doe
靜態變數 $name
在類外部使用類名訪問。
訪問靜態方法中的靜態變數
在第一個示例中,我們瞭解瞭如何訪問類中的靜態變數。在那裡,我們訪問了非靜態方法內部的靜態變數。
本節將把靜態變數放在靜態方法中並對其進行訪問。我們可以在函式前寫 static
關鍵字來建立靜態方法,在不建立類例項的情況下訪問靜態函式,並使用類名呼叫靜態方法。
示例程式碼:
class Student {
public static $name = "John Doe";
public static function who() {
echo self::$name;
}
}
Student::who();
輸出:
John Doe
在這裡,我們使用::
運算子訪問了類 Student
的靜態方法 who()
。我們使用 self
關鍵字來訪問方法內的靜態變數。
Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.
LinkedIn