在 PHP 面向對象程式設計中,訪問修飾符是控制類成員(屬性與方法)可見性的關鍵機制。PHP 提供了三種訪問修飾符:public(公有)、protected(受保護) 和 private(私有)。正確理解並使用它們,能有效實現封裝,提升代碼的安全性與可維護性。
若類成員未顯式聲明訪問修飾符,PHP 5 預設為 public。被聲明為 public 的屬性或方法,在任何位置均可訪問——類內部、子類、以及類外部(通過對象實例)。
受保護成員僅允許在當前類及其子類中訪問。類外部無法直接通過對象實例存取。這適合用於「內部邏輯,但需允許繼承擴展」的場景。
私有成員僅在定義它的類內部可見。子類無法繼承、覆寫或訪問父類的 private 成員;類外部當然也無法存取。這是封裝性最強的級別,適合隱藏核心實現細節。

<?php
class Woman {
public $name = "gaojin";
protected $age = "22";
private $height = "170";
function info() {
echo $this->name; // 類內部可訪問所有成員
}
private function say() {
echo "這是私有的方法";
}
}
class Girl extends Woman {
function info() {
echo $this->name; // 繼承自父類 public,可訪問
echo $this->age; // 繼承自父類 protected,可訪問
// echo $this->height; // 錯誤:private 不被繼承,不可訪問
}
function say() {
// parent::say(); // 錯誤:父類私有方法不可被繼承調用
echo "我是女孩";
}
}
$g = new Girl();
$g->say(); // 正常輸出「我是女孩」
// echo $g->height; // 錯誤:私有屬性外部不可訪問
// $g->info(); // 輸出 gaojin22(height 為私有,不輸出)
?>
合理運用訪問修飾符,遵循「最小權限原則」——預設用 private,需繼承時改 protected,確需對外暴露才用 public,能讓你的 PHP 類結構更清晰、更安全。