print_r() 関数と DateTime オブジェクト: ファントム プロパティの追加
PHP 5.3 では、print_r() 関数により DateTime オブジェクトが取得されることがあります。クラス内で明示的に定義されていない追加のプロパティ。次のコード例を考えてみましょう。
<code class="php">$m_oDate = new DateTime('2013-06-12 15:54:25'); print_r($m_oDate);</code>
このコードの出力には、デフォルトでは表示されない「日付」などの追加プロパティが含まれます。
ただし、同じオブジェクトに直接アクセスすると、これらのプロパティは未定義になります:
<code class="php">$m_oDate = new DateTime('2013-06-12 15:54:25'); echo $m_oDate->date;</code>
この不一致は、DateTime オブジェクト内に格納されているタイムスタンプに関する追加情報を提供することでデバッグを容易にするための PHP 5.3 内部の変更から発生します。これにより、オブジェクトがテキストにダンプされるときに、ファントムのパブリック プロパティが作成されます。
この問題を回避するには、代わりにリフレクションまたは適切な DateTime メソッドを使用して、必要な情報にアクセスすることをお勧めします。以下にいくつかの例を示します。
$obj->date
$obj->timezone
「timezone_type」プロパティはタイムゾーンの文字列表現に関連する内部値であるため、PHP API からはアクセスできないことに注意してください。
以上がprint_r() によって DateTime オブジェクトがファントム プロパティを取得するのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。