ホームページ > バックエンド開発 > PHPチュートリアル > PHP オブジェクト指向プログラミングの概要: アクセス修飾子を使用してオブジェクトのプロパティとメソッドを保護する方法

PHP オブジェクト指向プログラミングの概要: アクセス修飾子を使用してオブジェクトのプロパティとメソッドを保護する方法

WBOY
リリース: 2023-07-30 14:14:01
オリジナル
813 人が閲覧しました

PHP でオブジェクト指向プログラミングを始める: アクセス修飾子を使用してオブジェクトのプロパティとメソッドを保護する方法

PHP では、オブジェクト指向プログラミング (オブジェクト指向プログラミング、OOP と呼ばれます)は非常に一般的で強力なプログラムです。このようにして、エンティティをオブジェクトに抽象化し、そのプロパティとメソッドを定義してその動作を記述することができます。ただし、オブジェクトの内部状態やいくつかの重要なメソッドを保護するために、オブジェクトへのアクセスを制限する必要がある場合があります。この目的のために、PHP はこの目的の達成に役立つアクセス修飾子を提供します。

PHP には、public、private、protected という 3 つの一般的に使用されるアクセス修飾子があります。さまざまなアクセス修飾子によって、オブジェクトのプロパティとメソッドの外部への可視性とアクセス可能性が定義されます。以下では、これら 3 つのアクセス修飾子の使用方法を詳しく紹介します。

  1. パブリック アクセス修飾子

パブリック アクセス修飾子は最も一般的な修飾子で、オブジェクトのプロパティとメソッドにどこからでもアクセスして転送できることを示します。アクセス修飾子を定義しない場合、デフォルトは public アクセス修飾子です。

一般に、クラスのプロパティをプライベートまたはプロテクトとして定義し、メソッドをパブリックとして定義することで、外部コードがメソッドを通じてオブジェクトのプロパティにアクセスして操作できるようになります。次に、public アクセス修飾子の使用例を示します。

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 属性と を使用して Person クラスを定義します。 SayHello() メソッドはすべてパブリックです。 $name をパブリック プロパティとして設定すると、外部コードがプロパティの値を直接変更してアクセスできるようになります。 sayHello() メソッドは、オブジェクトをインスタンス化してメソッドを呼び出すことで、外部コードで挨拶を出力できます。

  1. プライベート アクセス修飾子

プライベート アクセス修飾子とは、オブジェクトのプロパティとメソッドが、それらが属するクラスおよび外部コード内でのみアクセスおよび呼び出すことができることを意味します。直接アクセスすることはできません。プライベート プロパティとメソッドにアクセスするには、クラス内で定義されたパブリック メソッドを使用する必要があります。 private アクセス修飾子の使用例を次に示します。

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"
ログイン後にコピー

上記のコードでは、$name プロパティはプライベートとして定義されており、外部コードから直接アクセスすることはできません。このプロパティに値を割り当てるには、パブリック setName($name) メソッドを定義し、メソッド内のプライベート プロパティにアクセスしてその値を設定します。同様に、外部コードで sayHello() メソッドを使用すると、オブジェクトをインスタンス化してメソッドを呼び出すことで、挨拶を出力できます。

  1. 保護された (保護された) アクセス修飾子

保護されたアクセス修飾子は、オブジェクトのプロパティとメソッドが、そのオブジェクトが属するクラス内でのみアクセスできることを示します。サブクラスを呼び出すため、外部コードから直接アクセスすることはできません。プライベート アクセス修飾子と同様に、保護されたプロパティやメソッドにアクセスするには、クラス内で定義されたパブリック メソッドを使用する必要があります。次に、protected アクセス修飾子の使用例を示します。

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."
ログイン後にコピー

上記のコードでは、Person クラスの $name 属性は protected として定義されていますが、 Student クラスは Person クラスを継承します。 Student クラス内では、Person クラスから継承された保護されたプロパティとメソッドに直接アクセスして呼び出すことができます。外部コードでは、Student オブジェクトをインスタンス化し、その定義されたパブリック メソッドを呼び出すことで、保護されたプロパティとメソッドにアクセスして呼び出します。

アクセス修飾子を使用すると、オブジェクトのアクセス権をより適切に制御し、不当なアクセスや操作を回避できます。実際の開発では、ニーズと設計原則に基づいてアクセス修飾子を合理的に選択して使用する必要があります。この記事が、PHP でのアクセス修飾子を理解して使用するのに役立つことを願っています。

以上がPHP オブジェクト指向プログラミングの概要: アクセス修飾子を使用してオブジェクトのプロパティとメソッドを保護する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート