faecher:informatik:oberstufe:datenbanken:projekt:dokuwiki_plugin:microblogging:step02:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
faecher:informatik:oberstufe:datenbanken:projekt:dokuwiki_plugin:microblogging:step02:start [21.06.2021 17:02] – [Die neue DB Klasse] sbelfaecher:informatik:oberstufe:datenbanken:projekt:dokuwiki_plugin:microblogging:step02:start [Unbekanntes Datum] (aktuell) – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1
Zeile 1: Zeile 1:
-====== 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 ((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: 
- 
-<code php> 
-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;  
-    } 
-     
-    // Das Klonen dieser Instanz verhindern. 
-    private final function __clone () {}  
- 
-} 
-</code> 
- 
-**Anmerkungen:**  
- 
-  * Die Schreibweise mit dem Doppel-Doppelpunkt ermöglicht den Zugriff auf statische Methoden und Felder, ohne ein Objekt der Klasse zu besitzen. Das benutzen wir, um in weiteren Klassen ein Datenbank-Handle zu erhalten. 
-  * Die Klasse selbst ist so konstruiert, dass sie nur eine Datenbankverbindung aufbaut. Wenn noch keine Datenbankverbindung existiert, wird ein neues myqldb-Objekt samt Datenbankhandle erzeugt, andernfalls lediglich das Handle zurückgegeben. 
-  * Außerdem verhindern wir, dass die Instanz geklont werden kann.  
- 
----- 
-[[{}..:step01:start|<- Schritt 1]][[{|float-right}..:step03:start|Schritt 3 ->]] 
  
  • faecher/informatik/oberstufe/datenbanken/projekt/dokuwiki_plugin/microblogging/step02/start.1624287757.txt.gz
  • Zuletzt geändert: 21.06.2021 17:02
  • von sbel