ホームページ  >  記事  >  バックエンド開発  >  PHP インスタンス オブジェクトのプライベート属性に直接アクセスするにはどうすればよいですか?

PHP インスタンス オブジェクトのプライベート属性に直接アクセスするにはどうすればよいですか?

黄舟
黄舟オリジナル
2017-10-13 09:19:181641ブラウズ

この記事では、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 = &#39;Public&#39;;
 protected $protected = &#39;Protected&#39;;
 private $private = &#39;Private&#39;;

 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 = &#39;self&#39;;
 public function test() {
  $other = new self();
  $other->a = &#39;other&#39;;
  var_dump($other->a);
 }
}

$aa = new A();
$aa->test();

上記のコードに示すように、新しい A オブジェクトを作成し、このインスタンスのプライベート属性 a に値を割り当てました。

同じクラスのオブジェクトであるため、同じインスタンスでなくても、互いのプライベートおよび保護されたメンバーにアクセスできます。これは、これらのオブジェクトの内部実装の詳細がわかっているためです。

以上がPHP インスタンス オブジェクトのプライベート属性に直接アクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。