我有一个我需要在:
中使用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()
不会是恒定值。因此,它是无效的。