PHPオブジェクト指向プログラミングでは、関数のアクセス権限が関数を呼び出すことができるコードを決定します。アクセス権の修飾子を設定することにより、開発者は機能の可視性とアクセス範囲を柔軟に制御し、それによりコードのセキュリティとカプセル化を強化できます。
一般に変更された関数は、すべてのコードに表示され、クラスの外部を含むどこでも呼び出すことができます。
public function publicFunction() {
// 関数コード
}
保護された修正機能は、関数を定義するクラスとそのサブクラスによってのみアクセスでき、クラスの直接の外側では呼び出すことはできません。
protected function protectedFunction() {
// 関数コード
}
プライベートによって変更された関数は、関数自体を定義するクラスによってのみアクセスでき、サブクラスとクラス外の両方でアクセスできません。
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は異なるアクセス権限を持つ関数を定義します。チャイルドクラスの保育は、親クラスで公共および保護された機能にアクセスできますが、プライベート機能ではありません。保護された関数は、クラスの外側に直接呼び出すことはできないことに注意する必要があります。
Access Rights Modifiersの合理的な使用は、PHPオブジェクト指向の設計の重要な部分です。関数のアクセスレベルを正しく指定することにより、クラスの内部実装の詳細を効果的に保護でき、必要なインターフェイスが外の世界に提供され、それによってコードのカプセル化と再利用が実現されます。