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>
这种不一致是由于 PHP 5.3 内部的更改引起的,为了通过提供有关存储在 DateTime 对象中的时间戳的附加信息来方便调试。这会导致在对象转储为文本时创建幻像公共属性。
为了避免此问题,建议使用反射或适当的 DateTime 方法来访问所需的信息。以下是一些示例:
$obj->日期
$obj->timezone
请注意,“timezone_type”属性无法通过 PHP API 访问,因为它是与时区的字符串表示形式相关的内部值。
以上是print_r() 何时导致 DateTime 对象获得幻像属性?的详细内容。更多信息请关注PHP中文网其他相关文章!