この記事では、PHP インスタンス オブジェクトのプライベート属性に直接アクセスする方法に関する関連情報を、サンプル コードを通じて詳細に紹介します。この記事は、学習や仕事に必要な学習に役立ちます。編集者と一緒に学びましょう。
はじめに
この記事では主に、PHP インスタンス オブジェクトのプライベート属性に直接アクセスする方法に関する関連内容を紹介します。主要な部分を紹介する前に、まず PHP オブジェクト指向のアクセス制御について確認します。
プロパティまたはメソッドのアクセス制御は、キーワード public (パブリック)、protected (保護された)、または private (プライベート) を先頭に追加することで実現されます。 public として定義されたクラス メンバーにはどこからでもアクセスできます。 protected として定義されたクラス メンバーは、それ自体、そのサブクラス、およびその親クラスからアクセスできます。プライベートとして定義されたクラス メンバーには、そのメンバーが定義されているクラスのみがアクセスできます。
クラス属性は、public、protected、private のいずれかとして定義する必要があります。 var で定義されている場合は、パブリックとみなされます。
以下のサンプルコードをご覧ください(公式ドキュメントより: http://php.net/manual/en/ language.oop5.visibility.php
<?php /** * Define MyClass */ class MyClass { public $public = 'Public'; protected $protected = 'Protected'; private $private = 'Private'; function printHello() { echo $this->public; echo $this->protected; echo $this->private; } } $obj = new MyClass(); echo $obj->public; // Works echo $obj->protected; // Fatal Error echo $obj->private; // Fatal Error $obj->printHello(); // Shows Public, Protected and Private
上記のコードに示されているように、インスタンスを使用していますクラスのオブジェクト クラスのプライベートまたは保護されたメンバーのプロパティにアクセスすると、致命的なエラーがスローされます
以下は、記事のタイトルが行うべきことです、PHP インスタンス オブジェクトのプライベート プロパティにアクセスします
通常の手順に従い、パブリック メソッドを作成してこの属性を返します
public function getPrivate() { return $this->private; }実際には、これを行う必要があります 以下は特別なシナリオでのみ使用されることを願っています。通常はコードを書かないでください。
<?php class A { private $a = 'self'; public function test() { $other = new self(); $other->a = 'other'; var_dump($other->a); } } $aa = new A(); $aa->test();上記のコードに示すように、新しい A オブジェクトを作成し、このインスタンスのプライベート属性 a に値を割り当てました。
同じクラスのオブジェクトであるため、同じインスタンスでなくても、互いのプライベートおよび保護されたメンバーにアクセスできます。これは、これらのオブジェクトの内部実装の詳細がわかっているためです。
以上がPHP インスタンス オブジェクトのプライベート属性に直接アクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。