Web 開発で一般的に使用されるプログラミング言語である PHP には、権限管理に関する厳しい要件もあります。プログラムのセキュリティを確保するために、開発者は権限制御修飾子を使用してプログラムのさまざまな部分の権限を制御する必要があります。この記事では、PHP のアクセス許可制御修飾子を詳細に紹介し、読者がそれらの機能と違いをよりよく理解できるようにし、対応するコード例を示します。
public 修飾子は、PHP で最も一般的に使用されるアクセス許可制御修飾子であり、パブリック メンバー変数およびメンバー メソッドを記述するために使用されます。メンバー変数またはメソッドをパブリックとして定義すると、任意のオブジェクトがその変数またはメソッドにアクセスできるようになります。
たとえば、次のコード例では、Person という名前のクラスを定義し、パブリック メンバー変数 $name とパブリック メンバー メソッドsayHello() を定義します。これらのメンバーへのアクセスにクラスの内部または外部にかかわらず、制限は必要ありません。
class Person { public $name; public function sayHello() { echo 'Hello, my name is '.$this->name; } } $person = new Person(); $person->name = 'Tom'; $person->sayHello();
protected 修飾子は、保護されたメンバー変数およびメンバー メソッドを記述するために使用されます。メンバー変数またはメソッドを保護されたものとして定義すると、サブクラスと親クラスのみがこれらのメンバーにアクセスできるようになります。
たとえば、次のコード例では、Animal という名前のクラスを定義し、その中に保護されたメンバー変数 $name と保護されたメンバー メソッド getName() を定義します。 Animal クラスのサブクラスと親クラスのみがこれらのメンバーにアクセスできます。
class Animal { protected $name; protected function getName() { return $this->name; } } class Cat extends Animal { public function setName($name) { $this->name = $name; } public function sayHello() { echo 'Hello, I am '.$this->getName(); } } $cat = new Cat(); $cat->setName('Tom'); $cat->sayHello();
private 修飾子は、プライベート メンバー変数とメンバー メソッドを記述するために使用されます。メンバー変数またはメソッドをプライベートとして定義すると、クラス内のメンバーのみがこれらのメンバーにアクセスできることになります。
たとえば、次のコード例では、Person という名前のクラスを定義し、その中にプライベート メンバー変数 $name とプライベート メンバー メソッド getName() を定義します。これらのメンバーは、クラスの外部から直接アクセスすることはできません。
class Person { private $name; private function getName() { return $this->name; } public function sayHello() { echo 'Hello, my name is '.$this->getName(); } } $person = new Person(); $person->name = 'Tom'; // 这里会报错 $person->sayHello();
final 修飾子は、クラスとメソッドのオーバーライドを制限するために使用されます。クラスまたはメソッドを Final として定義すると、サブクラスでオーバーライドできないことになります。
たとえば、次のコード例では、Animal という名前のクラスを定義し、その中に最後のメソッド Eat() を定義します。このメソッドはfinalとして定義されているため、Animalのサブクラスでオーバーライドできません:
class Animal { final public function eat() { echo 'I am eating'; } } class Cat extends Animal { public function eat() { // 这里会报错 echo 'I am not eating'; } } $cat = new Cat(); $cat->eat();
abstract modifierは抽象クラスと抽象メソッドを定義するために使用されます。 。抽象クラスはインスタンス化できず、他のクラスによってのみ継承できます。抽象メソッドには定義のみがあり、特定の実装はなく、サブクラスでオーバーライドする必要があります。
たとえば、次のコード例では、Animal という名前の抽象クラスを定義し、その中に抽象メソッド Eat() を定義します。 Eat() メソッドは抽象メソッドであるため、このメソッドは Animal サブクラス Cat:
abstract class Animal { abstract public function eat(); } class Cat extends Animal { public function eat() { echo 'I am eating fish'; } } $cat = new Cat(); $cat->eat();
に実装する必要があります。 上記の紹介を通じて、PHP のさまざまなアクセス許可制御修飾子の使用法と相違点を明確に理解できます。プロジェクトを開発する場合、プログラムの安全性と安定性を確保するために、特定のニーズに基づいて適切な許可制御方法を選択し、関連する規制を厳格に遵守する必要があります。
以上がPHP 権限制御修飾子の概要: さまざまな権限修飾子の使用法と相違点の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。