访问另一个类中的数据库包装器的理想方式


Ideal way of accessing database wrapper inside another class

>我有一个名为DB的类,它是一个PDO数据库包装器。它具有选择,更新,插入和删除表记录的功能。

class db {
    public $conn; //PDO
    public function __construct()
    {...
    }
    public function select($table, $fields = '*' , $where = '1=1', $params = array()) { 
        ....
    }
}

我通过此方法在另一个类中访问该类的功能:

class MyAPI extends API
{
public $db;
public function __construct($request) {
    parent::__construct($request);
    $this->db = new db();   
}
public function dosomething()
{
    $this->db->select(...);
}
}

这是正确的方法吗?我的意思是在主类中创建 db 类的对象并访问它。在面向对象编程方面,这能以更好的方式完成吗?

我强烈建议使用。

public static function getInstance(){
    if(!isset(self::$_instance)){
        self::$_instance = new DB();
        echo "Connected";
    }
    return self::$_instance;
}

$this->db = DB::getInstance();

这样您就不会多次实例化数据库类。这将提高代码的效率。并减少数据库的负载,因为您只连接到数据库一次。