web-dev-qa-db-ja.com

すべてのオブジェクト属性を一覧表示するPHP関数

Pythonのdir()と同様に、すべてのオブジェクトの属性(パブリックメソッドやプロパティなど)をPHP)に一覧表示する関数はありますか?

21
Alex

PHP5には、古い get_class_methods および get_object_vars が実行できることを超えるための完全な Reflection API が含まれています。

16
Paul Dixon

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

13
Candidasa
Reflection::export(new ReflectionObject($Yourobject));
12
Anti Veeranna

get_object_vars オブジェクト変数を一覧表示し、get_class_methods特定のクラスのメソッドを一覧表示します。

6
Vlad Andersen

さらに深く掘り下げて、オブジェクトのプライベート変数も取得したい場合は、クロージャを使用できます。お気に入り:

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

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

var_dump($sweetsThief($myobj));
0
Toinou Wbr