为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我不能访问PHP的datetime类中的datetime->date?是虫子吗?

为什么我不能访问PHP的datetime类中的datetime->date?是虫子吗?

PHP
慕工程0101907 2019-06-29 10:21:01
为什么我不能访问PHP的datetime类中的datetime->date?是虫子吗?使用DateTime类,如果我试图运行以下代码:$mydate = new DateTime();echo $mydate->date;我会得到这条错误信息注意:未定义的属性:datetime:$date.这没什么意义,因为当你跑的时候var_dump()关于变量$mydate,它清楚地表明,这一财产是存在的,并且可以公开访问:var_dump($mydate);object(DateTime)[1]   public 'date' => string '2012-12-29 17:19:25' (length=19)   public 'timezone_type' => int 3   public 'timezone' => string 'UTC' (length=3)这是PHP中的一个bug,还是我做错了什么?我使用的是PHP 5.4.3。
查看完整描述

3 回答

?
墨色风雨

TA贡献1853条经验 获得超6个赞

这是一个已知问题.

可用日期实际上是支持var_dump()这里-Derick@php.net

出于某种原因,你不应该能够访问这个属性,但是var_dump不管怎样都能显示出来。如果您确实希望以该格式获取日期,请使用DateTime::format()功能。

echo $mydate->format('Y-m-d H:i:s');


查看完整回答
反对 回复 2019-06-29
?
慕后森

TA贡献1802条经验 获得超5个赞

除使用外DateTime::format()可以使用反射访问该属性:

<?php

$dt = new DateTime();$o = new ReflectionObject($dt);$p = $o->getProperty('date');$date = $p->getValue($dt));

这比使用format()因为format()格式化已格式化的时间字符串。特别是当你在一个循环中做很多次的时候。

然而,这不是PHP的常规行为。上述评论中提到的@尼罗河已经提交了一个Bugreport。


查看完整回答
反对 回复 2019-06-29
?
守着星空守着你

TA贡献1799条经验 获得超8个赞

正如其他答案所指出的,这是PHP的一个问题,到今天仍未解决,但如果它是var_dump()我不太确定.。

echo ((array) new DateTime())['date']; // Works in PHP 7.

我确信的是如果的性质DateTime在我们打算使用的地方,它本来是可以使用的。但就像许多内部类一样而且,您不应该依赖“hacky”或“glitchy”方法来修复您的代码。相反,你应该使用他们的API.

echo (new DateTime())->format('Y-m-d H:i:s');

如果您不满意,可以扩展类,或者使用为你扩展了它。

echo (new Carbon())->toDateTimeString();

如果你想知道var_dump()创建对象的假输出__debugInfo()


查看完整回答
反对 回复 2019-06-29
  • 3 回答
  • 0 关注
  • 463 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信