ホームページ >バックエンド開発 >PHPチュートリアル >古い PHP バージョン (5.5 より前) で保護されたプロパティにアクセスするにはどうすればよいですか?
リフレクションなしで PHP の保護されたプロパティにアクセスする
直接アクセスが制限されている場合、オブジェクトの保護されたプロパティを取得するのは困難になることがあります。次の例を考えてみましょう。
class Fields_Form_Element_Location { protected $_value = 93399; }
$obj->_value や $obj->value など、$_value に直接アクセスすると、エラーが発生します。
代替案PHP バージョン 5.5 より前の解決策
PHP Reflection がないため5.5 より前の PHP バージョンで利用可能ですが、代わりのアプローチは get_class_vars() 関数を利用することです:
function accessProtected($obj, $prop) { $vars = get_class_vars(get_class($obj)); return $vars[$prop]; }
この関数を利用すると、アクセシビリティ設定を変更せずに保護されたプロパティの値を取得できます。
使用例
$obj = new Fields_Form_Element_Location; $value = accessProtected($obj, '_value'); echo $value; // Output: 93399
この方法では、リフレクションをサポートしていない PHP バージョンで保護されたプロパティを取得します。ただし、特に保護されたプロパティが動的に割り当てられる場合には、すべてのケースに適用できるわけではないことに注意することが重要です。
以上が古い PHP バージョン (5.5 より前) で保護されたプロパティにアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。