2011-09-12 4 views
4

オブジェクトのパブリックプロパティを取得する必要があります。これを行うための好ましい方法はありますか? Reflection APIのオーバーヘッドのためにReflectionObject#getProperties()を使用することには注意が必要ですが、オブジェクトを配列にキャストしてからget_object_vars()を使用するまでの間に、確立された標準または明白なパフォーマンスの向上がありますか?ReflectionObjectとキャストの配列対キャストvarsを取​​得するためのget_object_vars

明確にするために、私は配列にオブジェクトをキャストすると、すべてのオブジェクトのプロパティ私にを与えることを認識しますが、保護されたプロパティが*前に付加され、プライベートプロパティは、クラス名を先頭に追加されるように、それはまだだろうすばやくin_array($property, $properties);コールに有効です。

答えて

3

、あなたは間違いなく、特に代わりに不明瞭な行動でいくつかのあいまいな(array)キャストを使用しての、そのタスクのために設計された機能ですget_object_varsを、使用する必要があります。

3

それは同じことをしません。

get_object_vars()は、呼び出し元スコープから見える変数のみを返します(たとえば、保護された変数またはプライベート変数を返す場合もありません)。

配列にキャストすると、プライベートなものを含むすべてのプロパティが返されます。あなたがオブジェクトの公共プロパティを取得したいと

+0

実際、私はこの問題に注意した。 – Problematic

関連する問題