【发布时间】:2013-06-08 14:19:41
【问题描述】:
考虑以下代码示例:
$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() 将这些属性“添加”到对象中?请注意,它们未定义为 manual page 上的 DateTime 类的一部分。
【问题讨论】:
-
@Jessica 同时运行这两个代码块。为第二个而不是第一个生成警告。唯一的区别是
print_r在第二个中被注释掉了 -
多哈。我当时想,这似乎很明显。 :-P 我明白你的意思,我运行了代码 - 不知道。
-
我的猜测是,这是某种内部私有/受保护的属性,在转储时被放入对象/公开。
-
这不是错误。阅读手册,您会发现没有公共属性“日期”。
-
@vascowhite 不过,这不是问题所在;这就是为什么它出现在
print_r()之后;授予,它可能首先是由于一个错误:)
标签: php debugging datetime php-internals