ホームページ >バックエンド開発 >PHPチュートリアル >古い PHP バージョン (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 サイトの他の関連記事を参照してください。