我无法使显示错误的代码运行,就像不在对象上下文中使用$this一样


I cannot make code run that shows error is like Using $this when not in object context?

<?php class DB{
public static $conn;
public function __construct(){
    try {
        $this->conn = new 'PDO( 'mysql:host=' . Route::get('mysql/host') . '; dbname='. Route::get('mysql/db'), Route::get('mysql/username'), Route::get('mysql/password') );
        $this->conn->setAttribute('PDO::ATTR_ERRMODE, 'PDO::ERRMODE_EXCEPTION);
        return $this->conn;
    } catch (PDOException $e) {
        die('Sorry cannot connect!');
    }
}
public function __destruct(){
    $this->conn->close();
    unset($this->conn);
}
public static function db_query($query, $bindings){
    $stmt = $this->conn->prepare($query);
    $stmt->execute($bindings);
    $res = $stmt->fetchAll();
    return $res ? $res : false;
}

}

?>问题是如何将连接传递给另一个函数以避免上述错误。请帮忙?

不能在静态函数中使用$this。这是引用自PHP手册:

伪变量$this在对象上下文中调用方法时可用。 $this是对调用对象的引用(通常是方法所属的对象,但如果从辅助对象的上下文静态调用该方法,则可能是另一个对象(。

您可以将db_query()更改为非静态,并像$db->db_query()而不是DB::db_query()一样调用它