PHP開発では、オブジェクト指向プログラミング(OOP)は主流のプログラミングパラダイムです。 「クラス」と「オブジェクト」の構造を通じてコードを整理し、プログラム構造をより明確にし、拡張し、メンテナンスしやすくします。実際の開発では、アクセス修飾子を使用する必要があるクラス内のプロパティとメソッドのアクセス権を合理的に制御することが重要です。
この記事では、PHPの3つのアクセス修飾子、パブリック(パブリック)、プライベート(プライベート)、保護(保護)について詳細に説明し、例を使用して使用を習得するのに役立ちます。
アクセス修飾子は、クラス内のプロパティとメソッドのアクセスレベルを制御するために使用され、外部コードから内部実装への干渉とプログラムのカプセル化を回避します。 PHPは次の3つの修飾子をサポートします。
パブリック:パブリックアクセス、どこでもアクセス可能。
プライベート:プライベートアクセス、クラスの内部使用のみ。
保護:保護されたアクセス、クラスの内部およびサブクラスのみ。
パブリックは最も一般的なアクセス修飾子です。つまり、クラスの属性またはメソッドは外部に開放されており、どこでもアクセスまたは電話をかけることができます。
class Person {
public $name;
public function sayHello() {
echo "Hello, my name is " . $this->name;
}
}
$person = new Person();
$person->name = "John";
$person->sayHello(); // 出力:Hello, my name is John
この例では、 $ nameとsayhello()の両方が公開されています。外部の割り当てと呼び出しは、値に直接割り当てられ、呼び出されますが、これは非常に直感的ですが、属性が自由に変更され、プログラムの安定性に影響を与える可能性があります。
プライベートによって変更されたプロパティと方法は、それらを定義するクラス内でのみアクセスでき、外側に直接アクセスすることはできません。この方法は、カプセル化を強化し、クラスの内部実装を保護する一般的な手段です。
class Person {
private $name;
public function setName($name) {
$this->name = $name;
}
public function sayHello() {
echo "Hello, my name is " . $this->name;
}
}
$person = new Person();
$person->setName("John");
$person->sayHello(); // 出力:Hello, my name is John
public setName()メソッドを提供することにより、外部は$ nameを間接的に設定できますが、プロパティに直接アクセスすることはできず、データの整合性を効果的に保護します。
保護されているのはプライベートとパブリックの間であり、継承されたクラスがプロパティまたは方法にアクセスできるようにしますが、外部にはアクセスできません。
class Person {
protected $name;
public function setName($name) {
$this->name = $name;
}
public function sayHello() {
echo "Hello, my name is " . $this->name;
}
}
class Student extends Person {
public function study() {
echo $this->name . " is studying.";
}
}
$student = new Student();
$student->setName("John");
$student->sayHello(); // 出力:Hello, my name is John
$student->study(); // 出力:John is studying.
上記のコードでは、学生は人から継承するため、保護された$ nameプロパティに直接アクセスできます。保護された修飾子は、クラス継承構造での使用に適しており、カプセル化を維持し、特定の柔軟性を持っています。
Access Modifierを合理的に使用することにより、オブジェクトのプロパティとメソッドのアクセススコープを効果的に制御できるため、プログラムのセキュリティと保守性が向上します。実際の開発:
属性をプライベートまたは保護されたものに設定することをお勧めします。
データセキュリティを強化するために、パブリック方法を介して属性を操作します。
相続関係に従って保護された使用を選択します。
プロパティエクスポージャーによって引き起こされる制御不能な変更を避けてください。
これらの基本原則を習得すると、より堅牢で保守可能なオブジェクト指向のコードを作成するのに役立ちます。