Ich möchte fragen, ob es eine gute Praxis ist, eine einzelne Instanz der Datenbankverbindung zu haben oder jedes Mal, wenn wir sie benötigen, eine neue zu deklarieren. Ich habe diese zwei Designs unten gezeigt:
Dies ist die Datenbankklasse:
host = $host;
}
if(isset($dbname) && !empty($dbname)) {
$this->dbname = $dbname;
}
if(isset($username) && !empty($username)) {
$this->username = $username;
}
if(isset($passwd) && !empty($passwd)) {
$this->passwd = $passwd;
}
parent::__construct("mysql:dbname=$this->dbname;host=$this->host", $this->username, $this->passwd, NULL);
parent::setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
parent::setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
}
}
?>
Methode 1: Dependency Injection
db = $db;
}
//Einige Updates und Einfügungen weiter unten
}
class Employee {
private $db;
public function __construct(Database $db) {
$this->db = $db;
}
//Einige Updates und Einfügungen weiter unten
}
?>
Also werde ich das tun, wenn ich die Klassen verwenden möchte:
update($id,$data);
$emp = new Employee($db);
$emp->delete($id);
?>
oder auf andere Weise?
Methode 2:
db = new Database();
}
//Einige Updates und Einfügungen weiter unten
}
class Employee {
private $db;
public function __construct() {
$this->db = new Database();
}
//Einige Updates und Einfügungen weiter unten
}
?>
Und wenn ich es verwenden möchte, werde ich:
update($id,$data);
$emp = new Employee();
$emp->delete($id);
?>
Welche Methode ist vorzuziehen oder besser? Bieten Sie eine Erklärung, wenn möglich.