[Suche Anstoss] Interface für Erweiterungen

TheJoker

Grünschnabel
Guten Abend allerseits

Wie im Titel erwähnt suche ich einen kleinen Gedankenanstoss, ich komm einfach nicht weiter.

Wir müssen in der Schule ein kleines Projekt realisieren. Wir werden ein kleines Filehosting System auf Basis von PHP schreiben.

Mir schwebt jetzt vor, dass man als Betreiber das Script über Erweiterungen seinen Bedürfnissen anpassen kann. Also eigentlich eine kleine API, nur halt intern.

Das Ziel ist es, dass der Betreiber seine Erweiterungen einbringen kann, ohne am Core etwas ändern zu müssen.

Ich habe schon mehrere Ansätze durchgedacht, aber bei keinem bin ich wirklich weiter gekommen.
Unteranderem dachte ich, ob man das vielleicht über eine virtuelle Klasse regeln kann, welche von der Extension überschrieben wird. Allerdings hat man so wieder das Problem, dass die Klasse zuerst implementiert werden muss.

Weiter habe ich in diversen Foren immer wieder etwas darüber gelesen, sowas über XML zu realisieren, allerdings nie wie...

Wie würdet Ihr empfehlen soetwas zu realisieren?
Da ich bis jetzt bei meinen Projekten noch nie das Bedürftnis nach einer API hatte, weiss ich jetzt nicht so recht wo ich anfangen soll.

Ich hoffe ich konnte mein Gedankenchaos irgendwie verständlich wiedergeben :D
Danke schon mal im Voraus.

LG Pascal
 
Hi Pascal,

eine API ist in der Regel etwas externes und für den Datenaustausch ist XML sehr praktisch.
Intern ist es ein Interface.

Ich kann mir nicht so recht vorstellen was du genau mit "Erweiterungen" meinst aber in der Regel hilft es sich deren Funktionalität zu durchdenken und diese Aufgaben vereinheitlicht dann in ein Interface zu schreiben. Alle Erweiterungen implementieren dann dieses Interface.
Einige CM-System speichern die Konfiguration deren Erweiterungen in XML-Files.


Gruß Napofis
 
Danke für die schnelle Antwort.
Mein wunsch ist dieser: Der betreiber soll in der Lage sein die funktionalität soll vom Sytem ohne änderungen am Core zu erweitern.
Aber soweit hast du es ja glaub erfasst :D
An der Sache mit Xml hab ich auch schon rumstudiert, allerding stelle ich mir dann noch immer die frage, wie die Instanzen gebildet werden.
(sorry wegen der kleinschreibung. Vom handy her ist grossschreibung zu mühyam :P)
 
XML liefert nur die Daten. Die Instanzen werden durch vorher definierte Klassen instantiiert.

Die Funktionalität auf diese Art zu erweitern ist immer eine gute Idee, es ist zwar etwas mehr Aufwand aber dadurch hast du wesentliche besser Möglichkeiten dein System zuwarten und zu erweitern.

Wie teilst du Aufgaben auf?
Vermutlich wird der Core ein einfaches Framework sein das die Grundfunktionen zur Verfügung stellt. Also Datenbank Anbindung, Benutzer- Dateiverwaltung und solche Sachen halt.

Die Erweiterungen könnte dann sein, zB etwas sein das Statische Seiten generiert zB Startseite oder Impressum, das wirst du bei einem File Hosting ja brauchen. Und die Hosting Erweiterung selbst um die dreht sich ja alles. Zusätzliche Erweiterungen könnte zB. ein Chat, Forum oder Newsletter sein.
Hab ich das soweit richtig verstanden?

Wenn ja, mach dir mal Gedanken darüber wie die Speicherungen der Skript organisierst. Dann wie du die Erweiterung selbst den Core bekannt machst und/oder konfigurierst, eine Datenbank Tabelle würde sich da anbieten. Wie organisierst du die Erweiterungen selbst? MVC wäre dafür bestimmt gut geeignet.

Willst du die Erweiterungen selbst noch unterteilen, zB in deren Funktionsumfang und immer so weiter.


Ach ja vielleicht das ganze mal für die Basics und Datenbank in UML durch planen um eventuelle Schwierigkeiten vornherein zu erkennen.
 
Zuletzt bearbeitet:
Wie teilst du Aufgaben auf?
Vermutlich wird der Core ein einfaches Framework sein das die Grundfunktionen zur Verfügung stellt. Also Datenbank Anbindung, Benutzer- Dateiverwaltung und solche Sachen halt.
[...]
Hab ich das soweit richtig verstanden?
Richtig. So stelle ich mir das ganze vor.

Wenn ja, mach dir mal Gedanken darüber wie die Speicherungen der Skript organisierst. Dann wie du die Erweiterung selbst den Core bekannt machst und/oder konfigurierst, eine Datenbank Tabelle würde sich da anbieten. Wie organisierst du die Erweiterungen selbst? MVC wäre dafür bestimmt gut geeignet.
Eine Speicherung über die Datenbank ist warscheinlich das, was am einfachsten zu realisieren ist.

Und wegen der Organisation muss ich mal schauen, ich hab vorhin grad mal ein bisschen was über MVC nachgelesen. Klingt vielversprechend.
Aber ob wir es dann wirklich so umsetzen ist eine gänzlich andere Frage :D
Die Kollegen mit denen ich das Projekt umsetzte sind schon von meiner Idee mit dem Interface für Erweiterungen nicht ganz so glücklich :p

Und ja, wir haben auch vor das ganze zuerst mal als UML Durchzuplanen.

Auf jedenfall besten Dank für deine Tipps
 
Zurück