当前位置: 首页 > 面试题库 >

print_r()将属性添加到DateTime对象

包永新
2023-03-14
问题内容

考虑以下代码示例:

$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`上的类的一部分。


问题答案:

发生了一些魔术,但这很简单。

DateTime类没有您要访问的公共变量“date”。但是,作为PHP工作方式的副作用,在该类上调用print_r或var_dump时会创建一个变量。

魔术发生后,“日期”可用,但不应该。您应该只使用getTimestamp函数来使您的代码可靠地工作。



 类似资料:
  • 问题内容: 我要返回一个Mongoose文档,并希望在发送之前向其中添加一些元数据。但是,我无法添加任何属性,我不确定为什么。我检查了它是否可以使用Object.isExtensible(doc)扩展。 可能是什么问题? 问题答案: 啊..我的对象是一个Mongoose文档,不允许添加属性。解决方案是将返回的文档转换为普通对象,或者在查询中调用lean()。

  • 我想在gradle.properties文件中添加ndk.abifilters属性。现在我有了这栋楼里的房子。这是我建筑的一部分 这是我的gradle.properties文件的一部分

  • 问题内容: 如何添加到特定内容?不起作用。 问题答案: jQuery <1.9 jQuery 1.9以上

  • 问题内容: 这件事困扰了我一段时间。我为什么不能做: …虽然我可以执行以下操作? 这是什么规则?您能给我介绍一下吗? 问题答案: 您可以向具有的任何对象添加属性。 例如,没有它。 字符串和其他简单的内置对象也没有它。 使用类也没有它。 除非前面的声明适用,否则用定义的类都具有它。 如果使用/的对象没有/ ,通常是为了节省空间。例如,如果有一个命令,那就太过分了- 想象一下一个非常短的字符串的膨胀程

  • 问题内容: 在某些情况下,我想将DATETIME格式的变量的值增加1天: 做这个的最好方式是什么? 问题答案: 如果要在PHP中执行此操作: 如果要在MySQL中添加日期: