【发布时间】:2014-07-03 07:34:25
【问题描述】:
在我的代码中使用以下类时出现以下错误:
当不在对象上下文保护函数中时使用 $this
这是我的代码:
<?php
class Sign {
private $db;
private $errors = array();
private $passed = true;
public function __construct() {
$this->db = DB::instance();
}
public static function sign($alias, $password) {
if(!self::exists($alias)) {
self::signup($alias, $password);
} else {
self::signin($alias, $password);
}
}
protected function exists($alias) {
$stm = $this->db->prepare('SELECT * FROM users WHERE alias = ?');
if($stm->execute(array($alias))) {
return true;
}
return false;
}
protected function signup($alias, $password) {
$salt = Hash::salt(32);
$stm = $this->db->prepare('INSERT INTO users(alias, balance, password, salt, created_at)
VALUES (:alias, :balance, :password, :salt, :created_at)');
$stm->execute(array(
':alias' => $alias,
':balance' => 0,
':password' => Hash::make($password, $salt),
':salt' => $salt,
':created_at' => date('Y-m-d H:i:s')
));
}
public function errors() {
return $this->errors;
}
public function passed() {
return $this->passed;
}
}
为什么会出现此错误?第 20 行在 protected function exists() 内部,我使用 $this->db->prepare()
什么会导致这种情况发生?我尝试更改一些公共的、受保护的等,但无济于事。我将它们设置为私有和受保护的仍然会出现此错误。
【问题讨论】:
-
“为什么会出现这个错误?”错误是什么?
-
@JakeGould:“不在对象上下文中使用 $this”
-
@zerkms 是的,它在标题中。但是尽管如此,帖子的格式却很糟糕。为清晰起见进行了编辑。
标签: php class oop visibility