Forum: PC-Programmierung PHP in der Realität


von jo (Gast)


Lesenswert?

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 !?

von Peter (Gast)


Lesenswert?

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.

von Kai G. (runtimeterror)


Lesenswert?

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

von D. I. (Gast)


Lesenswert?

> 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.

von Sven P. (Gast)


Lesenswert?

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.

von Chris (Gast)


Lesenswert?

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.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

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.

von Sven P. (Gast)


Lesenswert?

Aus dem Grund setz ich bei der Inhaltstrennung recht gerne auf XML und 
XSLT :-D

von Kai G. (runtimeterror)


Lesenswert?

>Aus dem Grund setz ich bei der Inhaltstrennung recht gerne auf XML und
>XSLT :-D

Full Ack!

von jo (Gast)


Lesenswert?

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?

von Ronny M. (hobby-coder)


Lesenswert?

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...

von A. F. (artur-f) Benutzerseite


Lesenswert?

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
Noch kein Account? Hier anmelden.