在课堂中的变量定义中无法调用Time()



我有一个我需要在:

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

然而,这引发了:

解析错误:语法错误,意外'(',期望','或';'in [...] [...] [...] [...] 在第5行

我可以做到这一点,它有效:

<?php
class SomeClass {
    public $expiration = 0
    function __construct() {
        $this->expiration = time() + (21 * 24 * 60 * 60); 
    }
}

为什么我不能第一次做这件事?

为什么我不能第一次做这件事?

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

" [属性]是通过使用公共,受保护或私有的一个关键字,然后是普通变量声明来定义的。此声明可能包括初始化,但是此初始化必须为常数值 - 也就是说,它必须能够在编译时间和不得取决于运行时信息才能评估。" 。

来自属性的PHP文档:

类成员变量称为"属性"。您可能还会看到他们使用其他术语,例如"属性"或"字段",但就此参考而言,我们将使用"属性"。它们是通过使用公共,受保护或私有的关键字之一来定义的,然后是普通变量声明。此声明可能包括初始化,但是此初始化必须是一个恒定的值 - 也就是说,必须在编译时评估它,并且不得依赖运行时信息才能进行评估。

呼叫time()不会是恒定值。因此,它是无效的。

最新更新