透過實驗驗證 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 同步受影響
Human::$name 類別定義完成即存在,不依賴實例化print_r($p1) 僅顯示實例屬性 height,靜態屬性 name 不在物件結構中無論靜態或非靜態方法,皆儲存於類別記憶體空間。print_r($object) 不會顯示任何方法,證明方法不佔用實例記憶體。