Web アプリケーション開発において、権限制御はセキュリティを確保するための重要な部分です。 PHP には、クラス、プロパティ、メソッドへのアクセスを制御するためのさまざまな権限修飾子が用意されています。この記事では、これらのモディファイアの機能を詳細に分析し、サンプル コードを使用してそれらを適用する方法を示します。
Public は PHP の最も基本的な修飾子で、クラス、プロパティ、メソッドにどこからでもアクセスできることを示します。 public として宣言されたメンバーは、クラス外のコードから直接呼び出すことができます。例えば:
class Car {
public $color; // public財産
public function drive() { // public方法
echo "Driving";
}
}
上記のコードでは、Car クラスの $color プロパティと drive() メソッドは両方ともパブリックなので、どのオブジェクトからもアクセスできます。
$myCar = new Car();
$myCar->color = "red"; // アクセスpublic財産
$myCar->drive(); // 電話public方法
protected 修飾子は、プロパティまたはメソッドがクラス自体とそのサブクラス内でのみアクセスできることを示します。クラス外から直接呼び出すことはできません。例えば:
class Car {
protected $color; // protected財産
protected function drive() { // protected方法
echo "Driving";
}
}
サブクラスは、親クラスの保護されたメンバーにアクセスできます。
class SportsCar extends Car {
public function set_color($color) {
$this->color = $color; // アクセスprotected財産
}
}
$sportsCar = new SportsCar();
$sportsCar->set_color("blue"); // 電話public方法
Private は最も厳格なアクセス修飾子であり、クラス内でのみアクセスを許可します。プライベート メンバーは、クラス外でアクセスしたり呼び出したりすることはできません。例えば:
class Car {
private $mileage; // private財産
private function update_mileage() { // private方法
$this->mileage++;
}
}
クラス外のプライベート メンバーにアクセスするとエラーが発生します。
$myCar = new Car();
$myCar->mileage = 1000; // 間違い
$myCar->update_mileage(); // 間違い
Final 修飾子をクラスとメソッドで使用して、それらが継承またはオーバーライドできないことを示すことができます。クラスまたはメソッドが変更されていないことを保証するために使用されます。例えば:
class Car {
final public function drive() { // final方法
echo "Driving";
}
}
class SportsCar extends Car {
public function drive() { // エラーを報告します
echo "Driving fast";
}
}
Final を使用すると、重要なメソッドやクラスが変更されないことが保証され、コードの安定性とセキュリティが強化されます。
この記事では、PHP とそのアプリケーションで一般的に使用される権限修飾子を紹介します。
これらの修飾子の使用をマスターすると、適切な権限制御とコード構造設計を実現し、アプリケーションのセキュリティと保守性を向上させることができます。