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