gopeter
Lieutenant
- Registriert
- Okt. 2006
- Beiträge
- 573
Hallo zusammen,
ich arbeite jetzt zum ersten mal ernsthaft mit OOP in PHP, da bisher Funktionsbibliotheken ausgereicht haben. Da das jetzige Projekt aber ein bisschen größer ist als mein Kleinkram sonst, versuch ichs mal OOP
Dazu habe ich eine Frage:
Ich habe eine Klasse Clients(). Alle Methoden dieser Klasse benötigen Datenbankzugriff, also dachte ich mir, es wäre sinnvoll, den Datenbankaufbau (nutze PDO) gleich in die __constructor Methode zu packen.
1. ist das sinnvoll?
2. so sieht das momentan bei mir aus:
Allerdings ist das auch nicht wirklich sauber, weil ich ja somit die beiden Klasse direkt miteinander verbinde, oder? Habe jedenfalls gelesen, dass man das so nicht machen sollte... hat jemand Ideen hierfür?
ich arbeite jetzt zum ersten mal ernsthaft mit OOP in PHP, da bisher Funktionsbibliotheken ausgereicht haben. Da das jetzige Projekt aber ein bisschen größer ist als mein Kleinkram sonst, versuch ichs mal OOP
Dazu habe ich eine Frage:
Ich habe eine Klasse Clients(). Alle Methoden dieser Klasse benötigen Datenbankzugriff, also dachte ich mir, es wäre sinnvoll, den Datenbankaufbau (nutze PDO) gleich in die __constructor Methode zu packen.
1. ist das sinnvoll?
2. so sieht das momentan bei mir aus:
PHP:
<?php
// include database class
require_once('../../../lib/php/classes/database/database.class.php');
class Client {
public function __construct() {
$this->db = Database::get("default");
}
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";
}
}
public function editClient($values) {
if ($this->db->update("UPDATE clients SET name=?, initial=?, payment=?, hourly_rate=?, active=? WHERE cid=?",$values)) {
} else {
print "Updating failed";
}
}
public function __destruct() {
$this->db = null;
unset($this->db);
}
}
?>
Allerdings ist das auch nicht wirklich sauber, weil ich ja somit die beiden Klasse direkt miteinander verbinde, oder? Habe jedenfalls gelesen, dass man das so nicht machen sollte... hat jemand Ideen hierfür?