我真的不需要存储DateTime
对象。可以匿名拨打modify
吗?我试过了:
$passwordRequest->setExpire((new \DateTime())->modify('+12 hours'));
但无法让它发挥作用。我要月亮吗?
答案 0 :(得分:2)
在这个特定情况下,你可以使用date_modify()
代替:
passwordRequest->setExpire(date_modify(new DateTime(), '+12 hours'));
测试:
var_dump(date_modify(new DateTime(), '+12 hours'));
object(DateTime)#2 (3) {
["date"]=>
string(19) "2011-11-19 04:16:04"
["timezone_type"]=>
int(3)
["timezone"]=>
string(15) "America/Chicago"
}
如链接的重复问题中所述,您无法将方法链接到new
实例化。
答案 1 :(得分:0)
PHP的一个限制(无论如何我认为它是必须的)你必须在变量上调用方法。换句话说,你想要做的事情是不可能的。
答案 2 :(得分:0)
根据PHP,看起来你可以静态调用modify(),但我尝试了它并且它不会工作。看起来像DateTime需要被实例化,因为构造函数需要一个日期。
// According to PHP looks like it should work, but doesn't
$passwordRequest->setExpire((DateTime::modify('+12 hours'));
// Notice I have to pass a date to the construct when I instantiate
$date = new DateTime('2006-12-12');
$date->modify('+1 day');
更好的实现方法是使用两个args使modify()静态,一个用于日期,一个用于时间调整,如:
public static function modify($timeAdjust, $time = time())