PHP PHP Objektorientiert entwickeln - wie ?

mmtzh

Cadet 3rd Year
Registriert
Nov. 2014
Beiträge
62
Hallo,

ich muss für die Schule eine Webseite entwickeln. Die Seite soll eine Art Reise-Berichte-Portal sein. Es sollen sich Nutzer dort registrieren können und dann Berichte zu verschiedenen Ländern schreiben.

Ich habe früher bereits sehr viel mit PHP programmiert - jedoch hauptsächlich im prozeduralen Stil.

Jetzt zu meiner eigentlichen Frage...

wie entwickle ich so eine Seite generell am Besten objektorientiert ?

Um mich in ein Framework einzuarbeiten fehlt vermutlich eher die Zeit

Ich weiß nicht ob/wie ich ein eigenes MVC Pattern entwickeln kann

Und ich frage mich, ob es überhaupt Sinn macht, objektorientiert zu programmieren, wenn ich kein MVC Pattern verwende.

Kann mir hierzu jemand Tipps geben?
 
Ein CMS darf ich nicht verwenden...

es geht hauptsächlich darum, dass ich meine eigene Datenbank erstelle und verwende.
 
Wenn Du doch ein Framework verwenden möchtest, werf ich mal CakePHP in den Raum. Ich schätz die Eigenleistung für Dein Projekt auf ~500 Zeilen Code damit.
 
mmtzh schrieb:
Um mich in ein Framework einzuarbeiten fehlt vermutlich eher die Zeit
Ich weiß nicht ob/wie ich ein eigenes MVC Pattern entwickeln kann
Wer sagt, dass du die komplette MVC-Keule auspacken musst? Zumal MVC auch prozedural denkbar wäre.
Was ich dir definitiv ans Herz lege ist eine anständige Datenbankabstraktion, und da bietet sich Doctrine DBAL an. Doctrine ORM würde auch nicht schaden, einfach um etwas Ordung zu schaffen.

Und ich frage mich, ob es überhaupt Sinn macht, objektorientiert zu programmieren, wenn ich kein MVC Pattern verwende.
Wie gesagt, das eine hat mit dem anderen nichts zu tun. MVC ist nur ein Entwicklungsmuster, bei dem Inhalte/Datenstrukturen (Models), Darstellung (Views) und Operationen (Controller) voneinander getrennt werden, um z.B. die Darstellung zu verändern, ohne die Datenstrukturen zu vermurksen, und umgekehrt.

Objektorientierung macht IMMER Sinn, weil es ebenfalls Ordnung in das Chaos bringen kann.
 
Wie entwickelt man objektorientiert?
Man gliedert seine Seite in Objekte und setzt sie um, so einfach.
Du hast Nutzer? Dann gibts eine Userklasse mit Funktionen wie Neuanlage, Passwort vergeben, Login, Logout usw.
Du hast Berichte? dann gibt es eine Klasse Bericht mit Funktionen wie Neuanlage, Korrektur usw.

Die Steuerung (sprich Erzeugung der Objekte) machst du dann über einen zentralen Einstiegspunkt (index.php), ob du da eine Klasse draus machst ist dir überlassen.

Ein komplettes Framework brauchst du dazu nicht, aber eine Templateklasse a la Smarty/Twig/Dwoo auf jeden Fall, ohne wirst du mit objektorientierter Programmierung nicht viel Spaß haben(du mußt nicht MVC machen, aber Templates von der Programmlogik zu trennen ist irgendwo gesunder Menschenverstand und macht den Code besser lesbar). Nach ein oder zwei Tagen müßtest du die TemplateEngine aber eigentlich beherrschen, die Dinger sind zwar recht umfangreich aber die Grundfunktionen, die du wirklich brauchst, sind in ein paar Tagen gelernt.
Ergänzung ()

Daaron schrieb:
Wer sagt, dass du die komplette MVC-Keule auspacken musst? Zumal MVC auch prozedural denkbar wäre.
Was ich dir definitiv ans Herz lege ist eine anständige Datenbankabstraktion, und da bietet sich Doctrine DBAL an. Doctrine ORM würde auch nicht schaden, einfach um etwas Ordung zu schaffen.

Was genau spricht gegen PDO?
 
Daaron schrieb:
Nacktes PDO finde ich etwas unhandlich, z.B. was das Error Handling angeht. Wenn man da nicht aufpasst, exponiert man unter Umständen sensible Daten.
Spätestens wenn du aber ein SELECT ... WHERE foo IN (value1,value2,value3) als Prepared Statement machen willst, ist DBAL deutlich überlegen.
http://docs.doctrine-project.org/pr...nipulation.html#list-of-parameters-conversion

Hmm, aber für ein Schulprojekt? Wenn wir realistisch sind hat er da am Ende vielleicht 5 Klassen rumfliegen, jeweils mit 3 Statements für Neuanlage, Korrektur und Daten lesen, vielleicht etwas mehr. Für maximal 20 Statements würde ich mir zwei mal überlegen, ob ich noch eine zusätzliche Datenbankklasse mitnehme(wenn er schon prozedural programmieren kann, wird er ja grundlegende Datenbankabfragen schon beherrschen, da für 20 Statements noch was neues zu lernen ist glaube ich mit Kanonen auf Spatzen geschossen)...
 
PHP und objektorientiert, ohje. Mach dir für jeden zweiten Käse ne Klasse und recycel die (bzw. das oder die daraus entstandenen Objekte) in ner zentralen Datei. Dann hast du Anzeigeklassen für (modular) die Seite, sowie einzelne Objekte die nach Bedarf geladen werden.

Über das MVC Pattern wird die Geschichte nicht unbedingt leichter zu implementieren, aber wesentlich leichter zu verstehen.

mfg,
Max
 
Zuletzt bearbeitet:
mambokurt schrieb:
Hmm, aber für ein Schulprojekt? Wenn wir realistisch sind hat er da am Ende vielleicht 5 Klassen rumfliegen, jeweils mit 3 Statements für Neuanlage, Korrektur und Daten lesen, vielleicht etwas mehr.
Es spielt doch keine Rolle, wie viele eigene Klassen es am Ende sind. Ist ja nicht so, dass man Sachen wie DBAL oder Template-Engines selbst schreiben muss. Das Zeug ist da und frisst kein Brot, sorgt aber für ein sauberes, stabiles Grundgerüst.

Für maximal 20 Statements würde ich mir zwei mal überlegen, ob ich noch eine zusätzliche Datenbankklasse mitnehme(wenn er schon prozedural programmieren kann, wird er ja grundlegende Datenbankabfragen schon beherrschen, da für 20 Statements noch was neues zu lernen ist glaube ich mit Kanonen auf Spatzen geschossen)...
Ob 2, 20 oder 200 Statements, an Prepared Statements sollte man sich von Anfang an gewöhnen. Da man PDO idealerweise objektorientiert anspricht, und DBAL eben PDO seine Tücken nimmt, spricht gar nix gegen eine guten DB-Abstraktion. Es spricht hingegen enorm viel gegen nicht-abstrahierte Hinschluder-Statements.
 
Dann mach das doch ganz ohne Schickimicki? Wenn du früher viel mit PHP gemacht hast dann ist das ja wohl ein Klacks für dich. :)
 
Zuletzt bearbeitet:
Viel != gut.
Aber solange man weiß, dass man den Scheiß in der Realität nicht so verzapfen darf, aknn man bei Hausaufgaben auch pfuschen und Sicherheitslücken hinterlassen.
 
Daaron schrieb:
Ob 2, 20 oder 200 Statements, an Prepared Statements sollte man sich von Anfang an gewöhnen.

PHP:
$this->oPDO = new PDO('mysql:host=bla;dbname=blub', 'USER', 'PASSWORT');
$result = $this->oPDO->prepare('SELECT * FROM X WHERE y=? AND z=?');
$result->execute(array('1', '2'));
$erg = $result->fetchAll(PDO::FETCH_ASSOC);

Grundlegend anders kann DBAL das auch nicht machen, die machen das Statement nur zusätzlich kompatibel mit allen möglichen Datenbanksystemen, wobei ich mich eben frage ob man das für ein Schulprojekt jetzt unbedingt braucht.
 
Ich habe jetzt nicht alle Antworten durchgelesen, kann aber noch das Framework Codeigniter empfehlen.
Ist leichtgewichtig und einfach in Betrieb zu nehmen.

Ich setzte dieses aktuell mit einer REST API Erweiterung ein und nutze es zusammen mit AngularJS.
 
Zurück
Oben