#1
| |||
| |||
Aufbau meiner Klassen (für mein CMS)Ich habe mir mal Gedanken gemacht, wie ich meine Klassen aufbauen soll und hier meine Idee: Modul-Aufbau: - Jedes Modul hat eine Klasse (und evtl. weitere Dateien, die in diese Klasse included werden) - Parameter (Aktion) - return: true oder false (Fehler aufgetreten => false, alles ok => true) - Attribute => version, modulname, author(?), rechte fürs Modul, sonstige benötige Variablen - Methoden => output (Modul anzeigen), weitere global genutzte Klassen (Pfad include) - Template Parser - Rechtesystem - Sessionmanagement Die global genutzen Klassen bekommen eine globale Variable und dind unter dieser in allen Dateien/ Klassen verfügbar bzw. können mehrfach verwendet werden (verschiedene Objekte). Ziel ist es auch die Klassen so unabhängig wie möglich zu halten, also auch Klassenaufrufe von speziellen Klassen inerhalb einer Klasse zu vermeiden. Ausnahmen: globale Objekte, die standardmäßig im CMS implementiert sind. |
#2
| |||
| |||
Sagt mir komplett nicht zu, bzw. verstehe ich nicht. Du kannst Klassen schonmal nicht per include erweitern, das geht nur innerhalb von Methoden (mit einer speziellen Extension lassen sich Klassenmethoden allerdings dynamisch hinzufügen, ich habe ihren Namen allerdings vergessen... dooh! Ich könnte mir aber vorstellen, dass die Implementierung gerade in PHP nicht der Bringer ist). Und diese sind dann natürlich nur im Namensraum der entsprechenden Methode vorhanden, was bisweilen zu unvorhergesehenen Ergebnissen führen kann. Deine drei "superglobalen" Klassen existieren ersteinmal komplett unabhängig voneinander. Da fehlt mir der Container, der diese und deine Module zusammenpappt, das "Framework", sozusagen und um einmal in die Begrifflichkeit zu fallen. Die "globale Variable" gibt wohl nur den Pfad zur jeweiligen "superglobalen" Klasse an, dies würde ich eher in einer netten, kleinen Konfigurationsdatei hinterlegen, auf die alle Objekte zugreifen können. Das vermindert den Pflegeaufwand und damit auch Fehler bei der Implementierung mehrerer "Webs". Alternativ kannst du auch die magische Funktion __autoload() unter PHP5 benutzen oder auch je nach Gusto eine statische Klasse Config definieren, in der du alle benötigten Variablen als Klassenkonstanten definierst - somit haste sie alle in einem Topf. Das Sessionmanagement hängt mit dem Usermanagment eng zusammen, ich verstehe nicht, warum das auf gleicher Ebene existieren soll. Von der PHP-Warte aus gesehen: Was soll dort drinstehen, session_start()? Oder definierst du eigene Handler für die Sessionverwaltung? Wo kommen deine Daten her? Ich sehe keine Container, die für das Management und die Lieferung des Contents herhalten könnten. Wie du mit Aktionen verfährst, sei dir überlassen - doch fände ich es eleganter (es handelt sich bei "Aktionen" ja eh nur um simple isset(_REQUEST["hasnwurst"], denke ich mir mal...), diese noch weiter zu kapseln... somit wärst du einer MVC-Implementierung für die Module noch ein Stück näher. Du könntest ja für ein Modul ein Interface schreiben oder eine abstrakte Klasse, in der du bestimmte Basismethoden bereits vordefinierst. Die einzelnene Module könnten diese dann Implementieren und entsprechende spezielle Methoden bereitstellen, die deinen Quelltext rendern. Du wirst aber nicht drum rum kommen, diese Klassen dann "zu Fuß" zu instanziieren, mit include (s.o.) ist da nix. Finde ich persönlich auch nicht sehr elegant. |
#3
| |||
| |||
Mit dem erweitern per include meinte ich ja weitere Dateien innerhalb einer Methode/ Funktion Natürlich nicht in die Klasse an sich... Wichtig an dem Aufbau ist mir eher folgendes: - Parameter werden übergeben - intern werden nur eigene und übergebene Parameter verarbeitet (damit diese Klasse universell und eigenständig bleibt) - return ist immer true (ok) oder false (Fehler) - weitere Rückgaben über eine Methode z.B. output() Daten werden dann außerhalb geladen und übergeben als Parameter (Array). Sollten es Daten speziell nur für diese Klasse sein (also außerhalb nicht mehr verwendet), kann man diese auch innerhalb dieser Klasse aus der DB holen Das Sessionmanagement siehe ich da momentan in einer Ausnahmestellung. Das Modul user hat die Informationen zum User (Profil, UserInfo, bla, bla) un das Sessionmanagement hängt mit diesem Modul User und dem Login zusammen. Passender und einfacher wäre es ein Modul User zu schreiben, welches Session, Login und User beinhaltet. Ach ja, sehe meine momentanen Gedanken als unzusammenhängend! Ich mache mir gedanken über das Grundgerüst meiner Klasse, nicht jedoch wie ich diese genau zusammenbringe (da muss ich mir noch gedanken machen bzw. bin ich dankbar für Tipps). eBoy @ School |
#4
| ||||
| ||||
Ich finde es etwas unpassend für einen fehler einfach nur true und false auszugeben, ein eigenes error handling wär da schon praktischer, wenn du einen Template parser hast, kannst du ja für fehler eine error template parsen und ausgeben, quasi eine eigene "or die" funktion. Wenn deine Klassen größer werden weisst du zwar vielleicht welche klasse den fehler erzeugt, aber immer noch nicht welche methode, dann musst du wieder Hand anlegen. Die Vorschläge und Anregungen von bacon kann ich nur übernehmen und bestätigen... |
#5
| |||
| |||
Natürlich wird der Fehler nochmal genauer ausgewertet! Eine Klasse gibt im Fehlerfall false zurück und wenn kein Fehler vorliegt true zurück. Liegt nun ein Fehler vor, so wird das Klassen-Attribut "error" der betroffenen Klasse ausgelesen und ausgewertet. Deshalb will ich ja jeder Klasse auch ein eigenes Attribute error geben, welches dann von der Klasse error ausgewertet werden kann. Dazu wird das Attribute klassenname (oder so) verwendet, um den Fehler einer Klasse zuzuordnen, wodurch auch eine entsprechende Language-Datei eingebunden werden kann, die die Fehlermeldungen enthält. |
Stichworte |
- |
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Jung im Kopf und die Zukunft im Blut - Mitarbeiter zum Aufbau gesucht | Die.Substanz | Community Management, Administration und Moderation | 5 | 22.12.2006 16:51 |
Rechtesystem: Aufbau und Ablauf | eBoy | Entwicklung und Konzeption sozialer Software | 1 | 26.12.2005 14:44 |
Lust beim Aufbau zu helfen? | newx | Projektvorstellung und Bewertung | 2 | 31.03.2005 22:24 |
Aufbau einer Produktvorstellung | Michael Przybyla | Boardunity-Talk | 6 | 06.05.2004 20:24 |
[neues Projekt:] Wellness & Lifestyle Forum im Aufbau | Luki | Projektvorstellung und Bewertung | 3 | 03.04.2004 23:21 |