當前位置: 首頁> 最新文章列表> PHP函數訪問權限詳解:如何正確設置Public、Protected和Private

PHP函數訪問權限詳解:如何正確設置Public、Protected和Private

M66 2025-07-28

PHP函數訪問權限級別簡介

在PHP面向對象編程中,函數的訪問權限決定了哪些代碼可以調用該函數。通過設置訪問權限修飾符,開發者可以靈活控制函數的可見性和訪問範圍,從而增強代碼的安全性和封裝性。

訪問權限修飾符及其作用

Public(公共)

使用public修飾的函數對所有代碼都是可見的,可以被任意位置調用,包括類外部。

示例:

 public function publicFunction() {
  // 函數代碼
}

Protected(受保護)

protected修飾的函數僅能被定義該函數的類及其子類訪問,類外部無法直接調用。

示例:

 protected function protectedFunction() {
  // 函數代碼
}

Private(私有)

private修飾的函數只能被定義該函數的類自身訪問,子類和類外部均不可訪問。

示例:

 private function privateFunction() {
  // 函數代碼
}

實戰案例解析

下面示例展示了不同訪問權限的函數在父類和子類中的訪問情況:

 class ParentClass {
  public function publicFunction() {
    echo "Public function in parent class";
  }

  protected function protectedFunction() {
    echo "Protected function in parent class";
  }

  private function privateFunction() {
    echo "Private function in parent class";
  }
}

class ChildClass extends ParentClass {
  public function accessFunctions() {
    $this->publicFunction();
    $this->protectedFunction();
    // 以下調用會導致錯誤,因為privateFunction是私有的
    // $this->privateFunction();
  }
}

$child = new ChildClass();
$child->publicFunction();
$child->protectedFunction(); // 此處調用會報錯,protected函數不能被類外直接訪問

在該示例中, ParentClass定義了不同訪問權限的函數。子類ChildClass能夠訪問父類中的公共和受保護函數,但無法訪問私有函數。需要注意的是,受保護函數不能被類外部直接調用。

總結

合理使用訪問權限修飾符是PHP面向對象設計的重要組成部分。通過正確指定函數的訪問級別,可以有效保護類的內部實現細節,同時對外提供必要的接口,從而實現代碼的封裝與復用。