考虑以下代码示例:
$m_oDate = new DateTime('2013-06-12 15:54:25'); print_r($m_oDate); echo $m_oDate->date;
从PHP 5.3开始,这将产生(类似)以下输出:
DateTime Object ( [date] => 2013-06-12 15:54:25 [timezone_type] => 3 [timezone] => Europe/Amsterdam ) 2013-06-12 15:54:25
但是下面的代码:
$m_oDate = new DateTime('2013-06-12 15:54:25'); echo $m_oDate->date;
…仅发出错误:
Notice: Undefined property: DateTime::$date in ...
为什么print_r()将这些属性“添加”到对象?请注意,它们没有定义为手册页DateTime`上的类的一部分。
print_r()
发生了一些魔术,但这很简单。
DateTime类没有您要访问的公共变量“date”。但是,作为PHP工作方式的副作用,在该类上调用print_r或var_dump时会创建一个变量。
魔术发生后,“日期”可用,但不应该。您应该只使用getTimestamp函数来使您的代码可靠地工作。