2011-01-29 3 views
1

私はこのクラスを持っている:クラスの項目をPHPで印刷するにはどうしたらいいですか?

class MyClass { 
    public $dummy = array('foo', 'bar', 'baz', 'qux'); 
    public $progr = array('HTML', 'CSS', 'JS', 'PHP'); 
} 

私はそれをプリントアウトしようとしている:print_r(MyClass)を、それがMyClassのと何もして出力します。 echoprintvar_dumpvar_exportと同様のことがあります。 echo(test)の出力を出力するため、MyClassを文字列として扱うようです。

どのようにしてクラスのアイテムを一覧表示できますか?

答えて

3

インスタンス化しましたか?この出力は何

$m = new MyClass(); 
print_r($m); 
+2

私はオブジェクトよりもクラスの方が多いと考えていますので、reflecionを使用しています...もっと簡単な解決方法+1 – BoltClock

+0

OPが何を求めていたのか、私は同意します。クラス?")。似たような結果を得るための簡単な方法として、これをお勧めします。あなたの答えはここの正しい答えだと思います。 – mingos

+0

私はあなたの答えを受け入れています。なぜなら両方が私の望むことをするからですが、あなたのものは@ BoltClockのものよりやや簡単です。 – nyuszika7h

3

あなたのクラスのインスタンスで使用ReflectionClass、必要に応じて、あなたの例のようにプロパティの値を取得するためにReflectionPropertyを使用します。あなただけの値を取得したい場合は、2番目の思想に

$rc = new ReflectionClass(new MyClass()); 

foreach ($rc->getProperties() as $property) { 
    printf('%s = %s', $property->getName(), print_r($property->getValue(), true)); 
} 

オブジェクトのプロパティmingos' answer using print_r(new MyClass());も機能します。

もう一つは、

echo(test)出力テストので、彼らは文字列としてMyClassを扱うようです。

これは正常です:PHPは最初にそれらを定数として名を扱いますが、それはその名前で定義された定数を見つけることができない場合、それは引用符で囲まれていない文字列リテラルとして扱います。

+0

ありがとうございます! 'print_r(new MyClass())'は私のためにうまくいくようです - 私に 'new'を思い出させることに感謝します - しかし、' ReflectionClass'ということもいいです。 – nyuszika7h

+1

新しいReflectionClass( "MyClass");より適切になるだろう – akond

+1

ええ、私は過剰殺害です、私は睡眠が必要だと思います。 – BoltClock

2

場合によっては、クラスの__toStringマジックメソッドも実装すると便利です。簡単に言えば、__toStringでは、オブジェクトがエコーされたときのオブジェクトの動作を正確に指定できます。私はこの方法の真の可能性がはるかに深遠であると確信しているのに、私は、デバッグツールとして__toStringを使用したい:)

希望

http://www.php.net/manual/en/language.oop5.magic.php#language.oop5.magic.tostring

:詳細については、以下を参照してください。それは助ける。

+1

+1は '__toString()'であり、多目的です。 – BoltClock

関連する問題