这是生成随机字符串的静态函数:
public static function generateCode($salt)
{
$this->generate = substr(hash('sha512', $salt), 0, 15);
return $this->generate;
}
我就是这么用的:
$this->insert->execute(array(
":username" => $username,
"generated_code" => self::generateCode($email)
));
我已经声明了属性:
protected $generate;
得到这个错误:
Fatal error: Using $this when not in object context in C:'xampp'htdocs'drip'class'users.class.php on line 154
第154行:
$this->generate = substr(hash('sha512', $salt), 0, 15);
这是怎么回事?为什么会出现这个错误?
静态方法不属于对象的实例,$this与实例…
在这种情况下,我认为你不需要任何东西,除了简单地返回哈希的结果(候选的lambda表达式可能?)
public static function generateCode($salt)
{
return substr(hash('sha512', $salt), 0, 15);
}
static
函数意味着它被"绑定"到类,而不是每个实例(对象)。像这样调用它:
ClassName::generateCode($email);
同样,不能在静态函数中使用对象成员。将您的$generate
成员也设置为static
,并将其称为:
ClassName::$generate
在你的函数内部,你应该使用self而不是$this,因为这个函数被声明为静态的。
声明$generate成员为static,否则它将无法工作。