php - 属性 - simplexmlelement attributes 取得




すべてのオブジェクトの属性をリストするPHP関数 (4)

Pythonのdir()似た、PHPのすべてのオブジェクトの属性(パブリックメソッドやプロパティなど)をリストする関数はありますか?



Reflection APIのReflectionClass::getPropertiesメソッドとReflectionClass::getMethodsメソッドを使用して、これを行うことができます(ただし、APIはあまりよく書かれていないようです)。 PHPリフレクションは、実行時オブジェクトではなく、コンパイル時の情報のみを反映します。 ランタイム・オブジェクトを問合せ結果にも含めたい場合は、 get_object_varsget_class_varsおよびget_class_methods関数を使用することをget_class_methodsます。 get_object_varsget_class_varsは、前者の場合、実行時に動的に追加される変数を含め、特定のオブジェクトのすべての変数を取得しますが、後者はクラス内で明示的に宣言された変数のみを取得することです。


より深く行きたいならば、オブジェクトのprivate varを取得したい場合は、そのclosureを使うことができます。 次のように:

$sweetsThief = function ($obj) {
  return get_object_vars($obj);
};

$sweetsThief = \Closure::bind($sweetsThief, null, $myobj);

var_dump($sweetsThief($myobj));

Reflection::export(new ReflectionObject($Yourobject));




attributes