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:dbklasse:start [09.06.2021 07:27] – [Modellierung - fällt aus] sbel | faecher:informatik:oberstufe:datenbanken:projekt:dokuwiki_plugin:dbklasse:start [21.06.2021 15:34] (aktuell) – [Datenbank-Klasse] sbel | ||
---|---|---|---|
Zeile 37: | Zeile 37: | ||
* @return object | * @return object | ||
*/ | */ | ||
- | function | + | function |
try { | try { | ||
Zeile 48: | Zeile 48: | ||
} | } | ||
- | | + | |
} | } | ||
Zeile 84: | Zeile 84: | ||
</ | </ | ||
- | * Ergänze innerhalb der '' | + | * Ergänze innerhalb der '' |
* Mache dir klar, welche Funktion das dabei erzeugte Objekt '' | * Mache dir klar, welche Funktion das dabei erzeugte Objekt '' | ||
- | * Teste, was passiert, wenn du eine falsches Benutzer/ | + | * Teste, was passiert, wenn du eine falsches Benutzer/ |
< | < | ||
- | $dbhandle | + | $mydb = new mysqldb(" |
</ | </ | ||
+ | |||
+ | ==== Plugin-Konfiguration ==== | ||
+ | |||
+ | Sehr unschön ist jetzt natürlich, dass die datenbank Credentials im Quelltext des Plugins stehen - auf diese Weise kann man ein solches Plugin schlecht veröffentlichen oder weitergeben. Wesentlich sind hier 2 Implikationen: | ||
+ | |||
+ | - Das kollidiert massiv mit der Versionsverwaltung: | ||
+ | - Wenn ein anderer Benutzer in ferner Zukunft das Plugin in seinem eigenen Wiki verwenden möchte, muss dieser, um das Plugin für sich nutzbar zu machen den Quelltext editieren um dort seine eigenen Datenbank Zugangsdaten einzutragen - das ist aus vielen Gründen Mist, einer ist z.B.: wie das Plugin jetzt auf neue Versionen aktualisiert werden soll, denn dabei würden diese Änderungen ja jedes mal wieder rückgängig gemacht. | ||
+ | |||
+ | DokuWiki bietet für dieses Problemfeld die Möglichkeit, | ||
+ | |||
+ | === Konfigurations-Konventionen === | ||
+ | |||
+ | Im Plugin-Ordner gibt es ein Unterverzeichnis '' | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | Wenn wir jetzt also unser Plugin durch DokuWiki " | ||
+ | |||
+ | - Welche Optionen brauchen wir und was müssen wir diesbezüglich in die Datei '' | ||
+ | - Was sollen die Vorgabewerte für diese Optionen sein und was muss in '' | ||
+ | - Wie können wir im Quelltext des Plugins auf die Werte unserer Konfigurationsoptionen zugreifen? | ||
+ | |||
+ | Die **Optionen** liegen auf der Hand: DB-Username, | ||
+ | |||
+ | In den Dateien '' | ||
+ | |||
+ | <code php metadata.php> | ||
+ | $meta[' | ||
+ | </ | ||
+ | |||
+ | <code php default.php> | ||
+ | $conf[' | ||
+ | </ | ||
+ | |||
+ | Die vollständige Entwicklerdokumentation findet sich [[https:// | ||
+ | |||
+ | Zugriff auf die Werte der Plugin-Optionen erfolgt mit | ||
+ | |||
+ | <code php> | ||
+ | $dbuser = $this-> | ||
+ | </ | ||
+ | |||
+ | ---- | ||
+ | {{: | ||
+ | === (A3) === | ||
+ | |||
+ | Füge die Informationen aus dem vorigen Abschnitt deinem Plugin hinzu und mache auf diese Weise den Datenbankbenutzer konfigurierbar. | ||
+ | |||
+ | Teste die Änderungen, | ||
+ | |||
+ | {{ : | ||
+ | Dort sollte es jetzt einen Abschnitt für das Plugin '' | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | Trage deinen DB-Benutzernamen dort ein und speichere die Einstellungen. | ||
+ | |||
+ | Modifiziere dann deine '' | ||
+ | |||
+ | Teste, ob die Datenbankverbindung immer noch ordnungsgemäß zustande kommt. | ||
+ | |||
+ | Ergänze die weiteren Optionen für Passwort, Datenbankname und Datenbankhost, | ||
+ | |||
+ | ++++ Hilfestellung | | ||
+ | In der '' | ||
+ | <code php> | ||
+ | // get settings | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | // | ||
+ | | ||
+ | </ | ||
+ | ++++ | ||
==== Modellierung - fällt aus ==== | ==== Modellierung - fällt aus ==== | ||
Zeile 99: | Zeile 178: | ||
Wir entwickeln zunächst weitere Methoden innerhalb unserer mysqldb-Klasse - wenn sich unsere Problemstellung konkretisisert können wir im Zuge eines Code-Refactoring weitere Aufteilungen und Modellierungsschritte vornehmen. | Wir entwickeln zunächst weitere Methoden innerhalb unserer mysqldb-Klasse - wenn sich unsere Problemstellung konkretisisert können wir im Zuge eines Code-Refactoring weitere Aufteilungen und Modellierungsschritte vornehmen. | ||
+ |