Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
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 18:00] – [Benutzer] sbel | faecher: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, | ||
- | |||
- | Um dieses Ziel zu erreichen, // | ||
- | |||
- | ===== Die neue DB Klasse ===== | ||
- | |||
- | Passe die Datenbank Klasse in der Datei '' | ||
- | |||
- | <code php> | ||
- | class mysqldb { | ||
- | |||
- | static public $connection = null; | ||
- | private $dbobject; | ||
- | |||
- | /** | ||
- | * Constructor - connect to db, set handle attribute | ||
- | * | ||
- | * @param string | ||
- | * @param string | ||
- | * @param string | ||
- | * @param string | ||
- | * | ||
- | */ | ||
- | |||
- | private function __construct($dbusername, | ||
- | |||
- | try { | ||
- | self:: | ||
- | self:: | ||
- | |||
- | } catch ( PDOException $e ) { | ||
- | echo ' | ||
- | exit(); | ||
- | } | ||
- | |||
- | } | ||
- | |||
- | public static function getConnection($dbusername, | ||
- | // Wenn das Objekt noch keine PDO-Instanz hat | ||
- | // wird eine erzeugt | ||
- | if(self:: | ||
- | $dbobject = new mysqldb($dbusername, | ||
- | } | ||
- | |||
- | //Und das PDO-Objekt zurückgeben | ||
- | | ||
- | } | ||
- | | ||
- | // Das Klonen dieser Instanz verhindern. | ||
- | private final function __clone () {} | ||
- | |||
- | } | ||
- | </ | ||
- | |||
- | **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, | ||
- | * Außerdem verhindern wir, dass die Instanz geklont werden kann. | ||
- | |||
- | ===== Benutzer ===== | ||
- | |||
- | Nun wenden wir uns der Benutzer-Klasse zu. Diese hat zunächst vor allem die Aufgabe, zu überprüfen, | ||
- | |||
- | Erstelle im Unterverzeichnis '' | ||
- | |||
- | <code php> | ||
- | <?php | ||
- | |||
- | class bloguser { | ||
- | |||
- | protected $db; // Das DB-Handle | ||
- | |||
- | |||
- | // | ||
- | public function __construct ($dbusername, | ||
- | { | ||
- | // PDO Connection erzeugen/ | ||
- | // Objektattribut " | ||
- | | ||
- | } | ||
- | | ||
- | public function checkBlogUser ($dwusername) { | ||
- | print " | ||
- | |||
- | } | ||
- | |||
- | } | ||
- | |||
- | ?> | ||
- | </ | ||
- | |||
- | Das ganze kann man dann etwa so in der '' | ||
- | |||
- | <code php> | ||
- | [...] | ||
- | public function render($mode, | ||
- | { | ||
- | // Wir rendern nur HTML, sonst nix! | ||
- | if ($mode !== ' | ||
- | return false; | ||
- | } | ||
- | |||
- | // Breche die Verarbeitung ab, wenn der Benutzer nicht angemeldet ist. | ||
- | if ( ! isset($_SERVER[' | ||
- | $renderer-> | ||
- | return true | ||
- | } | ||
- | // get settings | ||
- | $dbpasswd = $this-> | ||
- | $dbname = $this-> | ||
- | $dbhost = $this-> | ||
- | $dbtable = $this-> | ||
- | // make db connection | ||
- | $bloguser = new bloguser($this-> | ||
- | // Prüfe, ob es den angemeldetn Benutzer schon in der DB gibt, lege ihn an wenn | ||
- | // nicht. Liefer die bloguserID des Nutzers zur weiteren Verwendung zurück | ||
- | $bloguser-> | ||
- | |||
- | |||
- | |||
- | |||
- | [...] | ||
- | </ | ||
- | |||
- | {{: | ||
- | === (A1) === | ||
- | |||
- | |||
- | |||
- | ---- | ||
- | [[{}..: | ||