Bei der Gruppe, für die Sie eine Mitteilung verfassen, handelt es sich um eine Usenet-Gruppe. Wenn Sie in dieser Gruppe Nachrichten posten, ist Ihre E-Mail-Adresse für jeden im Internet sichtbar
Ich stehe momentan vor einem fundamentalen Problem. In den letzten Tagen ist mein eigenes kleines CMS fertig geworden und merke jetzt, dass ich schon bei der Planung einen grundlegenden Fehler gemacht habe. Ein CMS sollte (meiner Meinung nach) mittles Module aufgebaut sein (bei mir nicht der Fall). Dabei muss es möglich sein "per Mausklick" Module zu aktivieren bzw. deaktivieren. Ich kann und will das Rad nicht neu erfinden und suche daher händerringend nach Informationsquellen und Ratschlägen, wie man eine modulbasierte Programlogik realisiert. Ich weiß dass meine Erklärungen noch recht vage sind, aber vielleicht fällt jmd. ein guter Rat für mich ein.
> Ich stehe momentan vor einem fundamentalen Problem. In den letzten > Tagen ist mein eigenes kleines CMS fertig geworden und merke jetzt, > dass ich schon bei der Planung einen grundlegenden Fehler gemacht > habe.
Ärgerlich. Aber immerhin hast du geplant.
> Ein CMS sollte (meiner Meinung nach) mittels Modulen aufgebaut > sein (bei mir nicht der Fall). Dabei muss es möglich sein "per > Mausklick" Module zu aktivieren bzw. deaktivieren.
Da kann ich dir zustimmen, wenn die Module wirklich unabhängig voneinander sind. (Wird dies nicht sogar schon durch die Bedeutung des Wortes Modul impliziert?!).
> Ich kann und will das Rad nicht neu erfinden und suche > daher händerringend nach Informationsquellen und Ratschlägen, > wie man eine modulbasierte Programmlogik realisiert.
Ich kann dir glaube ich (ich bin aber auch erst Anfänger) ein paar Ratschläge geben: Schreibe dein Programm objektorientiert. In JAVA würde ich jetzt einen Observer benutzen, bei dem sich die Module registrieren. In PHP musst du das AFAIK anders lösen. Ich gehe mal davon aus, dass ein Modul hier durch mehrere Klassen gegeben ist. Folglich brauchst du eine Art Schnittstelle für das Modul. Diese Schnittstelle sollte in allen Modulen (sehr) ähnlich aufgebaut sein, damit dein Hauptprogramm allgemein auf das Modul zugreifen kann. Eine solche Schnittstelle könnte z.B. in Form von verschiedenen Funktionen einer Interface-Klasse realisiert sein. Diese Funktionen könnten dann z.B. lauten:
doIt() - Die Standardarbeit, die das Modul verrichtet getOutput() - Die Ausgabe des Moduls wird weitergegeben getStatus() - Eventuelle Statusmeldungen (ich denke das ist optional) ... ..
Je nachdem wie komplex die Module (bzw. das simpelste Modul) sein soll, werden eben entsprechend weitere Funktionen implementiert. Extras müssen dann über Sonderfälle im Hauptprogramm benutzt werden. D.h. alles was nicht Standard ist, muss über Ausnahmen (if etc.) geregelt werden. Falls zwei Module dann doch irgendwie voneinander abhängig sind, könntest du ja ein weiteres Interface schreiben, dass für die Kommunikation zwischen den Modulen sorgt. Das wäre dann natürlich schon wesentlich spezieller (auf die Situation angepasst).
Ich weiß jetzt nicht, was genau die mit aktivieren/deaktivieren von Modulen meinst, aber ich tippe auf diesen Gedankengang: Es werden alle Module aufgelistet, die gefunden wurden. Ob sie eingebunden werden, hängt von einem Attribut ab (isActive). Falls das Attribut false ist, arbeitet das Modul nicht und hat somit auch keine Ausgaben. Falls das Attribut true ist, arbeitet das Modul, kann evtl. interagieren und hat auch Ausgaben. Man könnte das so lösen, dass es einen "Module suchen" Bereich gibt, in dem eben alle Module gesucht werden und deren Existenz irgendwo gespeichert wird. Standardmäßig ist jedes neu gefundene Modul aktiv. Jedes Modul bekommt einen Status isActive, der sich in diesem Bereich des CMS' einstellen lässt. (Sogar diesen 'Bereich' könntest du als Modul auffassen. Einmal benutzt kann es deaktiviert werden. Aktivieren lässt es sich dann eben nur noch über direkten Zugriff auf eine Datei oder sonstirgendwie, aber das sind jetzt unnötige Details)
Wie gesagt, ich kenne mich selbst nicht besonders gut auf diesem Gebiet aus. Ich habe einfach mal so ein paar Ideen aufgeschrieben. Vielleicht hilft's!?
> Ich stehe momentan vor einem fundamentalen Problem. In den letzten Tagen ist > mein eigenes kleines CMS fertig geworden und merke jetzt, dass ich schon bei > der Planung einen grundlegenden Fehler gemacht habe. Ein CMS sollte (meiner > Meinung nach) mittles Module aufgebaut sein (bei mir nicht der Fall). Dabei > muss es möglich sein "per Mausklick" Module zu aktivieren bzw. deaktivieren. > Ich kann und will das Rad nicht neu erfinden und suche daher händerringend > nach Informationsquellen und Ratschlägen, wie man eine modulbasierte > Programlogik realisiert. Ich weiß dass meine Erklärungen noch recht vage > sind, aber vielleicht fällt jmd. ein guter Rat für mich ein.
Am besten loest du sowas objektorientiert, wie Hero schon schrieb. Ein IMO hervorragendes Beispiel fuer objektorientierte Programmierung in PHP 5 ist der coWiki, den du unter http://develnet.org/ findet. Schau dir mal den Source an, nach kurzer Zeit sollte man sich zurecht finden. Ich finde auch, da die Dokumentationen fuer objektorientiertes Programmieren in PHP (5) bisher noch nicht so sehr ausgepraegt sind, schau dir die Java Dokumentation an, die Unterschiede zwischen Java und PHP 5 sind nicht sooo riesig in den Grundzuegen. Auch in PHP 4 wuerde ich sowas objektorientiert loesen, auch wenn die objektorientierung hier nicht allzu weit geht und mehr als Container fuer Funktionen funktioniert - aber das gibt auch schon eine recht gute Strukturierung.