PHP中的匿名对象调用?

PHP中的匿名对象调用?,php,object,call,anonymous,Php,Object,Call,Anonymous,我真的不需要存储DateTime对象。是否可以匿名调用modify?我试过: $passwordRequest->setExpire((new \DateTime())->modify('+12 hours')); 但无法让它工作。我是在请求月亮吗?这是PHP的一个限制(我认为它是一个限制),您必须对变量调用方法。换句话说,您试图做的是不可能的。在这个特定实例中,您可以这样使用: passwordRequest->setExpire(date_modify(new DateT

我真的不需要存储
DateTime
对象。是否可以匿名调用
modify
?我试过:

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

但无法让它工作。我是在请求月亮吗?

这是PHP的一个限制(我认为它是一个限制),您必须对变量调用方法。换句话说,您试图做的是不可能的。

在这个特定实例中,您可以这样使用:

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"
}
正如链接的重复问题中提到的,您不能将方法从
新的
实例化中链接出来。

根据,看起来您可以静态调用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');
更好的实现是使用两个参数将modify()设置为static,一个用于日期,一个用于时间调整,类似于:

public static function modify($timeAdjust, $time = time()) 

但是,从PHP5.4开始就有可能:)真的吗?最后我一直很怀念在PHP中能够做到这一点:)。是的,这是目前正在讨论的内容:手册中的所有方法都列为
ClassName::methodName
。这并不意味着静态方法。静态方法在方法签名中有
Static
关键字,cf。我认为这是一种命名约定,值得一试。谢谢。这不是正确的答案(php不支持链接),但我将使用它。