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

时间:2012-02-27 10:09:42

标签: php mysql class pdo

我正在开发一个小型的网络项目管理应用程序。 我有一些类,如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";
        }
    }

}
?>

但我觉得这没有道理。我怎么能做得更好?第一个想法:构造函数方法,连接到DB。

1 个答案:

答案 0 :(得分:2)

现在每个人似乎都喜欢一点依赖注入,这会将你的数据库对象与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";
        }
    }
}