深入解析 static 關鍵字在類中的三大用法:靜態屬性、靜態方法、延遲靜態綁定(static::)。
函數內 static $a = 1; 保持值跨調用不丟失,適用於遞歸計數器。
self::$prop 訪問,類外用 ClassName::$prop$this,調用無需實例化class MyObject {
public static $a = 0;
static function MyMethod() { self::$a += 2; echo self::$a; }
}
MyObject::MyMethod(); // 2
MyObject::MyMethod(); // 4
| 符號 | 含義 |
|---|---|
self:: | 當前定義類,不識別繼承層級 |
parent:: | 直接父類 |
static:: | 運行時實際調用類(延遲靜態綁定) |
class Base { static function who() { static::name(); } static function name() { echo 'Base'; } }
class Child extends Base { static function name() { echo 'Child'; } }
Child::who(); // 輸出 Child —— 靠 static:: 實現
static:: 解決繼承鏈中「調用最終實現」的需求,是多態靜態調用的關鍵。