Neue Klassen mit Datenbankzugriff

Wir wollen unserem Projekt nun weitere Klassen hinzufügen, von denen einige Datenbankzugriff benötigen. Die jeweiligen Operationen auf der Datenbank sollen aber in den jeweiligen Klassen gekapselt sein.

Um dieses Ziel zu erreichen, reduzieren wir zunächst die Funktionalität unserer mysqldb-Klasse darauf, eine 1) und nur eine Datenbankverbindung herzustellen und ein entsprechendes PDO-Objekt, das diese Verbindung repräsentiert, zurückzuliefern, welches dann innerhalb der anderen Klassen für den Datenbankzugriff verwendet werden kann.

Die neue DB Klasse

Passe die Datenbank Klasse in der Datei mysqldb.class.php folgendermaßen an:

class mysqldb { static public $connection = null; private $dbobject; /** * Constructor - connect to db, set handle attribute * * @param string $dbusername DB username * @param string $dbpassword DB password * @param string $dbname Database to connect to * @param string $host Database host to connect to (optional) * */ private function __construct($dbusername, $dbpassword, $dbname, $host ) { try { self::$connection = new PDO("mysql:host=$host;dbname=$dbname", "$dbusername", "$dbpassword"); self::$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch ( PDOException $e ) { echo 'Verbindung zur Datenbank fehlgeschlagen: ' . $e->getMessage(); exit(); } } public static function getConnection($dbusername, $dbpassword, $dbname, $host ) { // Wenn das Objekt noch keine PDO-Instanz hat // wird eine erzeugt if(self::$connection === null) { $dbobject = new mysqldb($dbusername, $dbpassword, $dbname, $host); } //Und das PDO-Objekt zurückgeben return self::$connection; } }

←→