用PHP匿名调用对象?

时间:2011-11-18 22:09:26

标签: php object call anonymous

我真的不需要存储DateTime对象。可以匿名拨打modify吗?我试过了:

$passwordRequest->setExpire((new \DateTime())->modify('+12 hours'));

但无法让它发挥作用。我要月亮吗?

3 个答案:

答案 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())