print_r() 函數與DateTime 物件:新增幻象屬性
在PHP 5.3 中,print_r() 函數可以取得使DateTime 物件可以取得使Date 物件中未明確定義的其他屬性。考慮以下程式碼範例:
<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>
這種不一致是由於PHP 5.3 內部的更改引起的,為了透過提供有關存儲在DateTime 物件中的時間戳記的附加資訊來方便偵錯。這會導致在物件轉儲為文字時建立幻像公共屬性。
為了避免此問題,建議使用反射或適當的 DateTime 方法來存取所需的資訊。以下是一些例子:
$obj->日期
$obj->timezone
請注意,「timezone_type」屬性無法透過 PHP API 訪問,因為它是與時區的字串表示形式相關的內部值。
以上是print_r() 何時導致 DateTime 物件獲得幻象屬性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!