1
我有一个持有mysqli实例的类(这样可以避免遍布源代码的数据库设置)。如何用可变数量的参数重载方法?
类DB的样子:
class DB {
private $mysqli;
public function connect() {
$this->mysqli = new mysqli("localhost", "user", "pwd", "db-name");
}
public function __call($method, $args) {
return $this->mysqli->$method(extract($args));
}
}
正如你可能会看到什么,我试图做的是重载每一个方法调用执行的mysqli的。
在其他PHP文件,我有:
$unq_vstr = $this->db->query("SELECT * FROM user_log WHERE user_ip='$ip' AND user_last_visit='$now';");
if ($unq_vstr->num_rows > 0) { // ERROR
// ...
}
但我发现了“注意:试图让非对象的财产上线/home/alessandro/www/admin/index.php 25“对应于if语句($ unq_vstr-> num_rows)。
我在做什么错? 我很确定它可能取决于数据库类,但我无法弄清楚是什么问题。
你觉得我应该用另一种方式来做到这一点吗(没有在我自己的类中包装mysqli)? 任何建议表示赞赏。
哇,好一个完整的答案。非常感谢!这真的很有帮助。 –