Dann habe ich mich als nächstes mit der Objektorientierung vertraut gemacht oder ich bin immer noch dabei. Die OOP ist ja auch ein sehr umfangreiches Gebiet und da gibt es ja auch viele verschiedene Strukturen oder "Programmaufbauten", wie z.B auch das MVC, was ja sehr bekannt ist.
Lohnt sich denn ein genauer Blick auf MVC oder gibt es da noch was bekannteres / besseres? Ich habe bis jetzt schon immer versucht, meine Programme möglichst Objektorientiert aufzubauen und dabei auch schon einige Programme erstellt, wie z.B Wer wird Millionär (C#), Kundenverwaltungssystem (C#), Textadventure (Java), Namensquiz (PHP), Blog (PHP, JS) und auch sonst noch einige kleinere Programme oder Spiele, einfach um micht weiterzubilden. Nur bin ich dabei auch immer mal wieder auf ein paar kleinere Probleme gestoßen und woher soll ich oder man so wissen, das die Lösung von einem so ganz okay ist? Der Blog befindet sich auch derzeit noch in Arbeit.
Dazu hätte ich jetzt auch mal in dem Kontext einige Fragen. Irgendwie komme ich da so alleine auch nicht weiter und ich weiß auch nicht, wonach ich da suchen soll. Da kennen sich hier ja einige mit Sicherheit sehr viel besser aus und können mir auch die entsprechenden Antworten geben.
Bei dem C# Kundenverwaltungssystem habe ich natürlich auch mit einer DB und MySQL gearbeitet und da habe ich es so gemacht, das ich dann eine Klasse Kunde hatte, die dann die Operationen auf der DB durchführt, also löschen, editieren usw. aber oft sind die Kunden ja auch dann noch einmal selbst einmal in einem Array oder so gespeichert oder irre ich mich da jetzt? Warum macht man das? Bringt das irgendwelche Vorteile? Ich stelle mir das eher schlecht vor, wenn man dann bspw. beim Start der Anwendung alle Kunden holt und dann irgendwie zum Ende synchroinisert oder so? Bei vielen Kunden vor allem, ist dann ja auch ein dementsprechend großes Array nötig.
Ich habe jetzt bei der Anwendung ja wie gesagt nur die Operationen in der Klasse Kunde aber keine Attribute in der Klasse, wie Name, Geburtsdatum etc.
Wäre das also okay oder sollte man die Kunden auch wirklich intern speichern, auch wenn man eine DB hat?
In meinem aktuellen Projekt, dem Blog komme ich grad auch nicht weiter und dazu hätte ich auch einige Fragen. Ich interessiere mich auch sehr für die Themen Sicherheit und auch, wie man das ganze gut Strukturiert, in Sachen Webandwendung oder auch allgemein. Hier hätte ich einige Fragen, erst einmal zur
Struktur:
1) Wie sollte die Ordnerstruktur am besten auf dem Server aussehen? Derzeit habe ich ein Verzeichnis für das Frontend und Backend, wo die PHP Dateien liegen. Eins für die CSS Dateien, eins für die Bilder (images), eins für die js Dateien (js) und eines für die HTML Dateien (Templates) als Smarty Datei gespeichert. Ich habe auch noch die eine Config und eine Initalisierungdatei direkt im var/www/html Verezichnis liegen.
2) Ich habe im meinem Blog Projekt jetzt leider auch noch viele einzelne PHP Dateien aber keine Klassen. Das wollte ich dann auch auf jeden Fall noch in Klasse umwandeln aber braucht man dann eigentlich überhaupt noch so einzelnen PHP Dateien oder sollten das alles PHP Klassen sein?
3) Ich habe jetzt ja auch in meinem Blog Projekt eine Klasse, die bspw. die Operationen auf der DB für die Einträge darstellt. Sollte man da auch wieder eine Collection haben, wo dann die Einträge gespeichert werden? Also eine interne Repräsentation oder reichen da die Operationen, wie Entry.Delete(.. ) usw. (also keine interne Repräsentation)?
4) Ich habe derzeit auch in vielen Dateien zigtausende includes stehen und da muss man ja auch immer jeweils den Pfad angeben, was ich dann auch über die index.php Datei mache aber wie hält man sowas einfacher? In der index.php muss ich dann ja jeden Pfad zu der Datei so angeben. Wie hält man das einfacher, sodass man auch nicht jede Datei so angeben muss oder jeden Pfad? Kommt mir irgendwie kompliziert oder "umständlich" vor.
PHP Code:
<?php
....
$site = isset($_GET['site']) ? $_GET['site'] : '';
switch($site)
{
// ....
case 'guestbook':
include('Frontend/guestbook.php');
break;
case 'no-access':
include('no-access.php');
break;
// ...
}
?>

oder sollte man einfach nur Funktionen machen und das war's? Ich habe jetzt derzeit einfach nur so Funtkionen gemacht. In Javascript ist das ja auch ganz anders, als wie z.B in PHP über eine Instanz.
PHP Code:
Test test = new Test();
1) Wie lagert man die Dateien sicher auf dem Server, sodass der Zugriff auf wichtige Dateien nicht möglich ist? Wo lagert man die Sachen dann konkret auf dem Serve. Wo die HTML Dateien, PHP Dateien ... ? Ich habe derzeit wie oben schon geschrieben alles im var/www/html Verzeichnis liegen.
2) Wie sichert man Dateien ab, die sich im Backend befinden, also sodass nur der Berechtigte Zugriff darauf hat? Reicht da eine einfache Überprüfung mit der Session "auth" oder "loggedIn" oder wie auch immer oder muss man da noch etwas machen?
4) Wie könnte man da eine Weiterleitung realisieren, sodass wenn man schon eingeloggt ist, weitergeleitet wird oder wenn man nicht eingeloggt ist, das man dann zum Login weitergeleitet wird?
4.1) Zudem wäre es da auch nett, wenn man dann auch nach dem erfolgreichem Login zur gewollten Seite weitergeleitet wird. Wie macht man das?
Dazu auch mal was von mir:
Derzeit habe ich das auch so in PHP gelöst, also wenn ich nicht eingelogtt bin, was ich auch wieder mit der Session prüfe, dann wird man mit
PHP Code:
echo '<meta http-equiv="refresh" content="1; url=index.php?site=no-access">';
5) Sollte man eigentlich alle HTML Dateien auch als PHP Datei speichern? Ich meine, dss ich das irgendwo gelesen habe aber warum oder ist das falsch?
Das wäre dann auch alles. Ich hoffe mal, das trotz der vielen Fragen jemand antwortet aber ich weiß teilweise auch nicht, wonach ich da suchen soll oder wo man dazu gute Informatonen, Anleitungen etc. findet. Außerdem kann ich mir ja die Frage derzeit noch nicht selber beantworten, ob meine Lösung so gut ist, da ich ja noch mehr oder weniger "Anfänger" in der OOP bin.
Über Hilfe, Tipps, Links oder Literaturvorschläge und Ratschläge würde ich mich sehr freuen!






