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不支持链接),但我将使用它。