如何使用PDO处理数据库实例


How to handle database instances with PDO

我正在开发一个小型web项目管理应用程序。我有一些类,比如Clients()、Services()、Projects()等。每个类都包含getClient()、newClient()和editClient()等方法。。。并且这些方法中的每一个都需要数据库连接。我增加了一个PDO课程。

我的客户类别的当前代码:

<?php
// include database class
require_once('../../../lib/php/classes/database/database.class.php');
class Client {
    public function getClient() {
        $db = Database::get("default");
        $clients = $db->select("SELECT * FROM clients ORDER BY name ASC");
        return $clients;
    }
    public function newClient($values) {
        $db = Database::get("default");
        if ($db->insert("INSERT INTO clients (name,initial,payment,hourly_rate,active) VALUES (?,?,?,?,?)",$values)) {
        } else {
            print "Inserting failed";
        }
    }
}
?>

但我认为这毫无意义。我怎么能做得更好呢?第一个想法:构造函数方法,它连接到数据库。

现在每个人似乎都喜欢一点依赖注入,这将使您的数据库对象与Client类解耦。

class Client {
    private $db = null;
    public function __construct($db) {
        $this->db = $db;
    }
    public function getClient() {
        $clients = $this->db->select("SELECT * FROM clients ORDER BY name ASC");
        return $clients;
    }
    public function newClient($values) {
        if ($this->db->insert("INSERT INTO clients (name,initial,payment,hourly_rate,active) VALUES (?,?,?,?,?)",$values)) {
        } else {
            print "Inserting failed";
        }
    }
}