Hallo! Wie ist das bei PHP und der Objektorientierung: benutzt man sie in Projekten oft, oder bleibt man eher nah an der Datenbank? Ich meine das so, wenn man sich z.B. ein Loginsystem vorstellt und jetzt sagen wir 3 möglichkeiten hat, möglichkeit a) ist ein Forum b) eigenes Profil und c) das Wetter in der eigenen Region...beim Einloggen wird eine Session ID vergeben und wenn man auf a) klickt wird eine Tabelle neuer Themen vom Forum geladen nach dem schema select topic from newnews und für jedes topic gleichzeitig ein link generiert. Klickt man nun einen Beitrag an, öffnet er sich, ebenfalls über SQL Abfragen, das passende HTML über @echo <table><tr> <td> $topic></td>$from> drum herum erzeugt... Macht man einen neuen Beitrag wird select into topics values($id.'textden ichschreibe)... usw alles in diesem Stil, bis jetzt ohne Objektorientierung... klickt man dann z.b. c) an wird wieder eine Anfrage an die DB gemacht usw. Ich sehe nicht, wie man bei PHP Objektorientierung sinnvoll einsetzen kann, wie könnte man mein genanntes Beispiel z.B. umändern damit es objektorientiert ist? Oder wenn man sich ein Warenkorbsystem vorstelle, ich sehe nicht wie das objektorientiert geht, session id und wenn man was bestellt wird es in die DB mit dem nickname geschrieben, fertig 2 zeilen..geht doch nicht einfacher !?
du kannst z.b. nach dem Login alle Daten von dem User in einem Object speichern. (email, name, alter, rechte ) Damit hast du dann inerhalb der Session imer zugriff auf die Daten und musst sie nicht jedesmal aus der DB abfragen.
Ja, es geht. Ja, es ist ab einer gewissen Größe sinnvoll. Deine Betrachtungsweise ist aber etwas verquert - Objektorientierung hat nichts mit der verwendeten Datenbank zu tun, auch wenn deren Wahl die spätere Implementierung beeinflusst. Habe leider auf Anhieb keinen besseren Artikel gefunden: http://en.wikipedia.org/wiki/Object_oriented_design Stell nochmal eine konkrete Frage, dann kann ich vermutlich mehr sagen. Gruß, Kai
> echo <table><tr> <td> $topic></td>$from>
Wer so eine Kacke noch ernsthaft professionell verwendet sollte sich
darüber Gedanken machen ob nicht ein rostiger Nagel im Knie angenehmer
wäre.
Sinnvollerweise trennt man Logik und Markup mithilfe eines
Templatesystems wie Smarty voneinander und erleichtert sich das Leben
damit mindestens um einen Faktor 100.
jo schrieb: > Hallo! > Wie ist das bei PHP und der Objektorientierung: benutzt man sie in > Projekten oft, Ja, sehr oft sogar. Schau mal für Spaß in Quelltexte von großen Projekten, etwa Mediawiki, das Woltlab-Board und so weiter. > oder bleibt man eher nah an der Datenbank? Die meisten Projekte erfinden eine eigene Datenbank-Kapselung. PHP lässt einen da ziemlich hängen, es gibt zwar hundert verschiedene Datenbank-Schnittstellen, aber die existieren alle parallel, werden teilweise nicht gepflegt, sind nicht fertig und so weiter. Manchmal geht es auch nicht nur darum, etwas möglichst einfach zu gestalten. Viel wichtiger ist eine saubere Kapselung, um nachher vernünftige Reviews hinzukriegen, um den Quelltext sauber warten und pflegen zu können etc.
Falls du offen für Alternativen bist, könnte ich dir Django empfehlen: http://www.djangoproject.com/ Wenn du mal einige Zeit mit PHP-Projekten zu tun hattest, wird dir Django wie eine Erleuchtung vorkommen. Der Datenbank-Layer von Django ist einfach toll. Du definierst dir in einer einzigen Datei die Klassen, die deine Daten modellieren. Dass dann die Tabellen in der Datenbank dazu passen, erledigt Django ganz von selbst. Die SQL-Abfragen, um die Daten aus der Datenbank in die Objekte zu lesen oder die Objekte in die Datenbank zu schreiben, erzeugt Django auch automatisch.
Christopher D. schrieb: >> echo <table><tr> <td> $topic></td>$from> > > Wer so eine Kacke noch ernsthaft professionell verwendet sollte sich > darüber Gedanken machen ob nicht ein rostiger Nagel im Knie angenehmer > wäre. > Sinnvollerweise trennt man Logik und Markup mithilfe eines > Templatesystems wie Smarty voneinander Man trennt meist in Darstellungslogik (View) und Anwendungslogik (Model, Controller). Alle Versuche Logik und Markup zu trennen laufen so ab: am Anfang baut man ein Templatesystem das simple Platzhalter ersetzt; dann will man Listen darstellen und merkt dass man einfache Iterationskonstrukte braucht; später will man einfache Verzweigungen realisieren und baut ein if-Konstrukt ein; noch später will man so einfache Dinge tun wie Strings escapen oder Leerzeichen entfernen, also baut man Unterstützung für Funktionen ein; und irgendwann merkt man dann dass man dabei ist PHP in PHP neu zu schreiben. Smarty ist diesem Ziel schon so nahe gekommen, dass wohl man ein neues Templatesystem in Smarty schreiben könnte. Kleine Veranschaulichung: Smarty:
1 | {foreach from=$myArray key=k item=v} |
2 | <li>{$k}: {$v|strip}</li> |
3 | {math equation="height * width / division" |
4 | height=$row_height |
5 | width=$row_width |
6 | division=#col_div#} |
7 | {/foreach} |
PHP:
1 | <? foreach $myArray as $k => $v: ?> |
2 | <li><?= $k ?>: <?= strip($v) ?></li> |
3 | <?= height * width / division ?> |
4 | <? endforeach; ?> |
@jo: Wenn du ernsthaft mit PHP entwickeln willst, verwende ein Framework wie CakePHP.
Aus dem Grund setz ich bei der Inhaltstrennung recht gerne auf XML und XSLT :-D
>Aus dem Grund setz ich bei der Inhaltstrennung recht gerne auf XML und >XSLT :-D Full Ack!
Hallo! Danke für Eure Antworten... ich glaube insgesamt ist mein Konzept nicht gut angekommen. Wie, wenn nicht mit dem Befehl echo "baut" man denn dann die Seite auf dem Browser aus bzw. schickt den HTML Code rüber? Gibt es einen anderen Befehl, und was spricht gegen den Einsatz von echo?
Du kannst z.B. das DocumentHere Format nehmen. Das sieht in etwa so aus: echo <<< TEMPLATE <html> ... </html> TEMPLATE; Alternativ setzt Du den HTML Text innerhalb der <?php ... ?> Tags und benutzt als Platzhalter einfach Variablem, z.B. $status... Die Variablen werden dann entsprechend ersetzt...
Ich habe das Gefühl, dass manche hier mit Frameworks und Begriffen rumprallen ohne selbst viel Ahnung oder Erfahrung zu haben. OOP lohnt sich bei größeren Projekten, wenn es darum geht Überblick zu behalten. Ein Vorteil von OOP ist auch wenn mehrere Entwickler an einem Projekt arbeiten. So benutzt der Eine die Klasse vom Anderen ohne sich mit dem Code auseinander setzen zu müssen. Parameter rein, Daten raus. Oft sind die Klassen auch skalierbar und einfach zu erweitern. Wenn du eine quick and dirty Lösung für z.B. private Seite brauchst, wo man sich die Bilder deiner Brifmarken angucken kann, kann man getrost auf OOP verzichten. Der Planungs und Umsetzungsaufwand mit Einbezug von Frameworks und Templatesystemen lohnt sich nicht. Also lass dich nicht von sinnlosen Kommentaren wie: >Wer so eine Kacke noch ernsthaft professionell verwendet sollte sich >darüber Gedanken machen ob nicht ein rostiger Nagel im Knie angenehmer >wäre. oder >Aus dem Grund setz ich bei der Inhaltstrennung recht gerne auf XML und >XSLT :-D nicht entmutigen :) Bei Zend gibt es eine Codeecke (achtung, nciht alles ist wirklich sauber gelöst und gut). Kannst dir da paar Klassen angucken um besser zu begreifen wann sich der Aufwand lohnt. http://www.zend.com/code/codex.php
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.