Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
faecher:informatik:oberstufe:datenbanken:projekt:dokuwiki_plugin:microblogging:step02:start [21.06.2021 14:59] – sbel | faecher:informatik:oberstufe:datenbanken:projekt:dokuwiki_plugin:microblogging:step02:start [24.06.2021 09:42] (aktuell) – sbel | ||
---|---|---|---|
Zeile 48: | Zeile 48: | ||
| | ||
} | } | ||
+ | | ||
+ | // Das Klonen dieser Instanz verhindern. | ||
+ | private final function __clone () {} | ||
} | } | ||
</ | </ | ||
- | Anmerkungen: | + | **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 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 | ||
+ | $dbusername = $this-> | ||
+ | $dbname = $this-> | ||
+ | $dbhost = $this-> | ||
+ | $dbpasswd = $this-> | ||
+ | // Create bloguser Object | ||
+ | $bloguser = new bloguser($dbusername, | ||
+ | // Prüfe, ob es den angemeldeten Benutzer schon in der DB gibt, lege ihn an wenn | ||
+ | // nicht. | ||
+ | $bloguser-> | ||
+ | |||
+ | [...] | ||
+ | </ | ||
+ | |||
+ | ==== Aufgaben ==== | ||
+ | |||
+ | |||
+ | {{: | ||
+ | === (A1) === | ||
+ | |||
+ | Füge die Codebestandteile von oben so in dein Projekt ein, dass diese dort funktionieren. Als angemeldeter Benutzer solltest du also die Ausgabe erhalten, dass es den Benutzer noch nicht gibt und dieser angelegt werden sollte. | ||
+ | |||
+ | |||
+ | ---- | ||
+ | {{: | ||
+ | === (A2) === | ||
+ | |||
+ | Ergänze die Klasse '' | ||
+ | |||
+ | Implementiere in der Methode '' | ||
+ | |||
+ | ++++ Hilfe Stufe 1 | | ||
+ | <code php> | ||
+ | public function checkBlogUser ($dwusername) { | ||
+ | print " | ||
+ | |||
+ | // Datenbankabfrage wie bisher, das DBO Handle ist in $this-> | ||
+ | // $statement= $this-> | ||
+ | // $statement-> | ||
+ | // $treffer = $statement-> | ||
+ | // (Erklärung: | ||
+ | / versuchen es zu speichern. Wenn es das nullte Element nicht gibt, ist | ||
+ | // $treffer nicht gesetzt, das kann man mit ' | ||
+ | | ||
+ | // TODO: Abfrage ergänzen, um zu prüfen obs den Benutzer gibt | ||
+ | | ||
+ | if ( ! isset($treffer) ) { | ||
+ | print "Nein, nicht gefunden, muss angelegt werden."; | ||
+ | // TODO: Abfrage, die den User anlegt. | ||
+ | } | ||
+ | |||
+ | // Wert der Felder setzen | ||
+ | $this-> | ||
+ | $this-> | ||
+ | } | ||
+ | </ | ||
+ | ++++ | ||
+ | |||
+ | ++++ Hilfe Stufe 2 | | ||
+ | <code php> | ||
+ | public function checkBlogUser ($dwusername) { | ||
+ | print " | ||
+ | |||
+ | $statement= $this-> | ||
+ | $statement-> | ||
+ | $treffer = $statement-> | ||
+ | | ||
+ | if ( ! isset($treffer) ) { | ||
+ | print "Nein, nicht gefunden, muss angelegt werden."; | ||
+ | // TODO: Insert Statement vorbereiten und ausführen | ||
+ | // $statement= $this-> | ||
+ | // $statement-> | ||
+ | |||
+ | // TODO: Nochmal die ID abfragen (die es jetzt hoffentlich gibt) | ||
+ | // .... | ||
+ | $treffer = $statement-> | ||
+ | } | ||
+ | |||
+ | // Wert der Felder setzen | ||
+ | $this-> | ||
+ | $this-> | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | ++++ | ||
+ | |||
+ | Ergänze eine Getter-Methode, | ||
+ | |||
+ | |||
+ | ---- | ||
+ | {{: | ||
+ | === (A3) === | ||
+ | |||
+ | Verifiziere, | ||
+ | |||
+ | Lege weitere Benutzer in DokuWiki an und prüfe, ob diese ebenfalls angelegt werden. | ||
+ | |||
---- | ---- | ||
[[{}..: | [[{}..: | ||