在类定义中不能使用sha1?

Mr_*_*imp 4 php sha1

我正在使用PHP登录类.我在类定义中有以下行:

private $salty = sha1('salty');
Run Code Online (Sandbox Code Playgroud)

...这给了我以下错误:

"解析错误:解析错误,期待','' or';''在第26行的C:\ xampp\htdocs\test\includes\jaLogin.php"

我已经尝试在类定义之外使用这一行并且它工作正常,只有当我在类定义中使用它时才会出现问题.

如果我删除"私人"一词,我会得到一个稍微不同的错误:

解析错误:解析错误,期望第26行的C:\ xampp\htdocs\test\includes\jaLogin.php中的"T_FUNCTION"

我觉得我错过了一些明显的东西......

Ste*_*rig 8

您不能使用函数调用来初始化类成员变量.

class YourClass
{
    private $salty;

    public function __construct()
    {
        $this->salty = sha1('salty');
    }
}
Run Code Online (Sandbox Code Playgroud)

是初始化变量的一种方法.

编辑

甚至,例如,不允许两个常量字符串的简单连接(protected $_string = 'Hello ' . 'World!';).类属性的评估发生在编译时,因此依赖于运行时信息的构造的使用是非法的.

[...]此声明可能包括初始化,但此初始化必须是常量值 - 也就是说,它必须能够在编译时进行评估,并且必须不依赖于运行时信息才能进行评估.

(属性)