首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 靜態屬性記憶體位置解析:屬於類別而非物件實例

     編輯:PHP 綜合知識

透過實驗驗證 PHP static 靜態屬性儲存在類別層級記憶體,不屬於任何物件實例,所有實例共享同一份記憶體空間。

驗證程式碼

class Human {
    static public $name = "小妹";
    public $height;
    public function tell() {}
}

echo Human::$name; // 不需實例化即可存取

$p1 = new Human();
$p2 = new Human();
print_r($p1); // 僅顯示 height,無 name

$p1::$name = "夫人"; // 透過物件修改靜態屬性
echo $p2::$name; // 輸出:夫人,p2 同步受影響

觀察結果分析

  1. Human::$name 類別定義完成即存在,不依賴實例化
  2. print_r($p1) 僅顯示實例屬性 height,靜態屬性 name 不在物件結構中
  3. 任一實例(或類別直接)修改靜態屬性,所有實例讀取皆為新值,證實共享同一記憶體位址

方法同樣儲存在類別層級

無論靜態或非靜態方法,皆儲存於類別記憶體空間。print_r($object) 不會顯示任何方法,證明方法不佔用實例記憶體。

實務啟示

  • 靜態屬性適合儲存全域共享資料(如計數器、快取、設定)
  • 大量實例化時,將不變資料改為靜態可大幅節省記憶體
  • 多執行緒環境(如 Swoole)操作靜態屬性需注意同步鎖
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved