php - 无法在类中的变量定义中调用time()

时间:2017-03-07 18:44:37

标签: php oop properties

我有一个类需要在:

中使用php的time()函数
<?php
class SomeClass {
    public $expiration = time() + (21 * 24 * 60 * 60); // 3 wks from now  

}

但是这会引发:

  

解析错误:语法错误,第5行的 [...] [...] 中的意外'(',期待','或';'

我能做到这一点并且有效:

<?php
class SomeClass {
    public $expiration = 0

    function __construct() {
        $this->expiration = time() + (21 * 24 * 60 * 60); 
    }
}

为什么我不能在第一时间做到这一点?

2 个答案:

答案 0 :(得分:2)

  

为什么我不能在第一时间做到这一点?

因为http://php.net/manual/en/language.oop5.properties.php

  

“[properties]是通过使用关键字public,protected或private之一定义的,后跟普通变量声明。此声明可能包括初始化,但此初始化必须是常量值 - 也就是说,必须能够在编译时进行评估,并且必须不依赖于运行时信息才能进行评估。“

答案 1 :(得分:1)

来自Properties的PHP文档:

  

类成员变量称为“属性”。您也可以使用“属性”或“字段”等其他术语来查看它们,但出于本参考的目的,我们将使用“属性”。它们通过使用public,protected或private之一,然后是普通变量声明来定义。 此声明可能包含初始化,但此初始化必须是常量值 - 也就是说,它必须能够在编译时进行评估,并且必须不依赖于运行时信息才能进行评估。

time()的调用不是常量值。因此它将是无效的。