PHP5 引入三種可見性修飾符,構建可靠 OOP 應用與可重用類庫的基石:
| 修飾符 | 訪問範圍 |
|---|---|
public | 無限制,任何代碼可讀寫/調用 |
private | 僅類內部可見,子類不可訪問 |
protected | 類內部 + 所有子類可見 |
未指定預設為 public。靜態成員同樣支援可見性,寫法如 public static。
<?php
class Widget {
private $name; private $price; private $id;
public function __construct($name, $price) {
$this->name = $name;
$this->price = floatval($price); // 強制類型
$this->id = uniqid();
}
public function equals($widget) {
return ($this->name == $widget->name) && ($this->price == $widget->price);
}
}
$w1 = new Widget("Cog", 5.00);
$w2 = new Widget("Cog", 5.00);
$w1->equals($w2); // true,雖然 id 不同
?>
equals() 可訪問另一實例的 private 屬性——同類實例間互信。
私有屬性對外暴露需透過 getXxx()/setXxx(),構造函數可做初始驗證(如 floatval()),實現窄介面與數據驗證。
class Thing extends Widget {
public function getName() { return parent::getName(); } // 訪問父類 protected 方法
}
外部代碼調用 $w1->getName() 會報錯,但子類內部可訪問。
public → 必須保持 publicprotected → 可維持或放寬為 publicprivate → 不可覆寫(同名屬性視為新成員)final 方法禁止子類覆寫(僅適用方法,不適用屬性)