Object Orientiert PHP

hi

hab ein wenig objectorientiert programmieren mit php angeschaut und jetzt will ich versuchen ein einfaches forum zu basteln.

jetzt habe ich gehört das man classen vererben kann zum beispiel wie bei einem auto, jedes auto kann bremsen aber da gibt es verschiedene autos z.b. cabrio kann auch noch das dach auf und zumachen.

jetzt wollte ich fragen ob das bei den usern des forums auch so geht, also: jeder user kann posts schreiben aber es gibt mods und die können zusätzlich posts löschen. kann man das auch mit vererbung machen?

und ist es schlau wenn man für user und mod eine classe macht?

danke im voraus
bosz4

bei sowas machst du am besten ne oberklasse welche alle funktionen enthält die mods und user können und die ableitende klasse, hat dann alöle funktionen der oberklasse und zusätzlich die funktionen der unterklasse

sehr gut danke. und wie muss ich das machen wenn ich zum beispiel einen post in die DB schreiben will? brauch ich da ne datenbankklasse? und soll ich das auslesen von usereingaben auch in eine funktion oder sogar eine klasse schreiben?

Nein.
Beide sind Benutzer des Systems - also legt man dafür eine Klasse an.
Die sorgt z.B. dafür, dass der Benutzer sich Anmelden/Einloggen kann, sein Profil pflegen kann, etc.

‘user’ und ‘mod’ sind erst mal nur Benutzer-Ränge.
Was die dürfen oder nicht, wird man auch in der Datenbank ablegen (Stichwort Normalierung beachten!), und die Benutzerklasse wertet dann aus, ob der User eine Aktion ausführen darf.

wie chrisb schon sagte beide sind grundsätzlich ertsmla nur benutzer, mit verschiedenen rängen und rechten aber trotzdem nur benutzer daher sollten auch beide über die selbe klasse behandlt werden. ansonsten machst du dir wesentlich mehr aufwand als notwendig bzw. wird es dann schnell unflexibel.

für die datenbanknkverbundung musst du dir erstmal im klaren sein ob du nur ein rdbms unterstützen willst oder verschiedene (bei verschiedenen sind klassen und schnittstellen sehr an zu raten) wenn nicht würde ich auch auf eine klasse zurückgreifen aber ohne ein zugehöriges interface bzw. eine abstracte klasse ganz einfach um auch benchmarking/profiling umsetzen zu können und auch einige standart funktionen zu erweitern