Php Can';在类定义中不使用sha1?
我正在用PHP开发一个登录类。在类定义中有以下行:Php Can';在类定义中不使用sha1?,php,sha1,Php,Sha1,我正在用PHP开发一个登录类。在类定义中有以下行: private $salty = sha1('salty'); …这给了我以下错误: 解析错误:解析错误,应为C:\xampp\htdocs\test\includes\jaLogin.php中的第26行上的“”、”或“”;” 我曾尝试在类定义之外使用这一行,但效果很好,只有在类定义内部使用这一行时,我才会遇到问题 如果删除“private”一词,则会出现一个稍有不同的错误: 解析错误:解析错误,在第26行的C:\xampp\htdocs\t
private $salty = sha1('salty');
…这给了我以下错误:
解析错误:解析错误,应为C:\xampp\htdocs\test\includes\jaLogin.php中的第26行上的“”、”或“
”;”
我曾尝试在类定义之外使用这一行,但效果很好,只有在类定义内部使用这一行时,我才会遇到问题
如果删除“private”一词,则会出现一个稍有不同的错误:
解析错误:解析错误,在第26行的C:\xampp\htdocs\test\includes\jaLogin.php中应为'T_FUNCTION'
我觉得我缺少了一些明显的东西…您不能使用函数调用来初始化类成员变量
class YourClass
{
private $salty;
public function __construct()
{
$this->salty = sha1('salty');
}
}
是初始化变量的唯一方法
编辑
甚至,例如,不允许两个常量字符串的简单串联(protected$\u string='Hello.'World!'
)。类属性的计算发生在编译时,因此使用依赖于运行时信息的构造是非法的
[……]本声明可包括:
初始化,但是这个
初始化必须是常量
值——也就是说,它必须能够
在编译时计算,并且不能
依赖于中的运行时信息
要评估的订单
()只需将变量声明为null,然后在构造函数中初始化它
private $salty = null
function __construct() {
$this->salty = sha1('salty');
}
$sha1()无法运行,因为您试图将函数作为变量处理
当您正在开发更好的登录机制时,为什么不开始使用:
$this->salty = hash("SHA512", "salty");
此外,您还可以创建一个salt散列并将其与您的密码一起添加。这个添加给您带来了一点开销,因为您还必须将salt保存在db表中,并在验证(用户)凭据时检索和合并它
希望它能帮助你 宾果!没错!谢谢你。知道为什么吗?因为你的类只是一个数据结构。您总是需要调用函数来将它们设置为某些值。在您的例子中,它是构造函数。添加了一些解释。实际上,这是一个在执行过程中何时计算成员变量的问题。这很有意义。谢谢