ホームページ >バックエンド開発 >PHPチュートリアル >古い PHP バージョン (5.5 より前) で保護されたオブジェクトのプロパティにアクセスするにはどうすればよいですか?

古い PHP バージョン (5.5 より前) で保護されたオブジェクトのプロパティにアクセスするにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-05 16:15:14269ブラウズ

How Can I Access Protected Object Properties in Older PHP Versions (Pre-5.5)?

PHP で保護されたオブジェクトのプロパティにアクセスする

PHP のオブジェクト指向プログラミングでは、public、protected、private の 3 つのアクセス修飾子が提供されます。ただし、保護されたプロパティに直接アクセスできないことは、特定のオブジェクトを操作するときにイライラする可能性があります。この記事では、PHP 5.5 より前のバージョンで保護されたプロパティを取得するためのソリューションについて説明します。

ReflectionClass から Rescue

PHP 5.5 より前では、ReflectionClass クラスは次のメソッドを提供していました。保護されたプロパティにアクセスします。次の関数はその方法を示しています。

function accessProtected($obj, $prop) {
  $reflection = new ReflectionClass($obj);
  $property = $reflection->getProperty($prop);
  $property->setAccessible(true);
  return $property->getValue($obj);
}

この関数を使用すると、オブジェクトとプロパティ名を引数として渡すことで、保護されたプロパティにアクセスできます。たとえば、例のオブジェクトを指定すると:

$value = accessProtected($obj, '_value');

このメソッドは、保護された _value プロパティを効果的に取得し、$value 変数に保存します。

PHP 5.2 のメモ.17

ReflectionClass ソリューションはローカル環境では有効でしたが、実行中のサーバーでは利用できない可能性があります。 PHPバージョン5.2.17。残念ながら、このようなバージョンの PHP では、保護されたプロパティにアクセスするための代替方法はありません。

以上が古い PHP バージョン (5.5 より前) で保護されたオブジェクトのプロパティにアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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