这是我的静态函数,用于生成随机字符串:
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);
这有什么问题?为什么它会给我这个错误?
答案 0 :(得分:7)
静态方法不属于对象的实例,$ this与实例有关...
在这种情况下,除了简单地返回哈希的结果(lambda表达式的候选者可能?)之外,我认为你不需要任何其他东西。
public static function generateCode($salt)
{
return substr(hash('sha512', $salt), 0, 15);
}
答案 1 :(得分:4)
static
函数意味着它与类“绑定”,而不是每个实例(对象)。这样称呼:
ClassName::generateCode($email);
此外,您不能在静态函数中使用对象成员。让您的$generate
成员也static
,并将其称为:
ClassName::$generate
答案 2 :(得分:0)
在你的函数中你应该使用self而不是$ this,因为函数被声明为static。
将你的成员$ generate声明为static,否则它将无效。