Zur Boardunity Forenstartseite
  #1  
Alt 21.02.2006, 19:39
Mitglied
 
Registriert seit: 01.2005
Beiträge: 137

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  
Alt 22.02.2006, 00:46
Mitglied
 
Registriert seit: 01.2005
Beiträge: 14
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  
Alt 22.02.2006, 14:17
Mitglied
 
Registriert seit: 01.2005
Beiträge: 137
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  
Alt 23.02.2006, 18:26
Benutzerbild von haSta
Code Freak!
 
Registriert seit: 02.2006
Ort: Bade Wüddebeech
Beiträge: 32
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  
Alt 23.02.2006, 19:59
Mitglied
 
Registriert seit: 01.2005
Beiträge: 137
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.

Antwort


Stichworte
-

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
Gehe zu

Ä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 15:51
Rechtesystem: Aufbau und Ablauf eBoy Entwicklung und Konzeption sozialer Software 1 26.12.2005 13:44
Lust beim Aufbau zu helfen? newx Projektvorstellung und Bewertung 2 31.03.2005 21:24
Aufbau einer Produktvorstellung Michael Przybyla Boardunity-Talk 6 06.05.2004 19:24
[neues Projekt:] Wellness & Lifestyle Forum im Aufbau Luki Projektvorstellung und Bewertung 3 03.04.2004 22:21






1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24