0

関数のパラメーターとして手動で渡すことなく、既存のすべてのオブジェクトでprint_r()を使用する方法を見つけようとしています。現在、これをデバッグに使用し、次のように実行します。

function($obj1 as null){

// insert styling here

    print_r(get_object_vars($obj1));

// insert more styling

}

今のところ、各ページのオブジェクトごとにこの関数を使用する必要があります。管理が大変になります。get_object_varsを使用してオブジェクト変数を出力するために、ある種のコレクションを使用する1つの関数があると便利です。

これを書いている間、私は各オブジェクトの変数を持つクラスを作成することを考えました。次に、各クラスの__constructで、そのオブジェクトを使用して新しいクラスに自分自身を割り当てます。ただし、これは多くの作業になり、非効率的なようです。

4

2 に答える 2

0

これはあなたが探しているものでしょうか?

http://php.net/manual/en/function.get-defined-vars.php

そのページには、さまざまな目的で関数を使用する方法を説明する多くのコメントがあります(おそらく、関連するものの1つは、変数のみを返すことです)。

これでも、現在のスコープ内の変数と、get_defined_varsの呼び出し前に宣言された変数のみが実行されます。

于 2012-09-16T16:06:32.697 に答える
0

本当にデバッガーが必要なようです。しかし、それを動的に (一度に存在するすべてのオブジェクトに対して) 実行する唯一の実際の方法は、それらをデバッグ クラスに登録することです。それを行うクラスを作成し、他のすべてのクラスにそのクラスを拡張させることができます (ただし、既存のクラス階層を踏むことになり、ガベージ コレクターも少し壊れる可能性があります!

一部のコードを節約する別の部分的な解決策は、各デバッグ呼び出しで、出力したいオブジェクトを配列にリストし、それらをループすることです。

foreach(array('var1', 'var2', 'var3') as $name) {
    debug($$name);
}

可変変数

于 2012-09-16T16:03:56.980 に答える