stilistisch korrekt arbeiten

Alles, was PHP betrifft, kann hier besprochen werden.

stilistisch korrekt arbeiten

Postby Ste-Re » 20. November 2006 23:25

Hallo zusammen,

ich bin gerade dabei ein PHP Projekt zu überarbeiten und habe dabei beschlossen, dass diverse Punkt zweckmäßiger statisch in HTML zu codieren sind, als alles dynamisch in einer DB zu lassen.
Jetzt meine Frage, was ist stilistisch "sauberer"
Varainte a) alles in php-tags zu setzen und "statische" Anteile in "echo"-Tags zu setzen. oder
Variante b) alles, was statisch ist rein HTML lassen und nur die expliziten DB-Anfragen in php-tags zu setzen???

Ich finde Variante b übersichtlicher, will aber nicht mehr als notwendig auf diese Form umschreiben. Danke für eure Tipps & Hinweise
Ste-Re
 
Posts: 8
Joined: 18. November 2006 18:17

Postby kekster » 22. November 2006 16:58

weder a) noch b)

trenne php code komplett vom design. schau dir dazu zb smarty.php.net an
Hinzufallen ist keine Schande - Liegen zu bleiben dagegen verachtenswert
kekster
 
Posts: 19
Joined: 15. November 2006 10:28
Location: Paderborn

Postby Ste-Re » 22. November 2006 17:21

trenne php code komplett vom design


Das ist nur sehr bedingt möglich. Klar, diverse Funktionen lassen sich auslagern und sind auch schon zum Teil ausgelagert. Viele Aspekte werden aber dynamisch aus einer MySQL DB ausgelesen. Da wäre es sehr unzweckmäßig, wenn ich die Infos an einer Stelle hole um sie dann an einer anderen ein zu setzen. Auch wenn das technisch nicht ganz die feine Art ist, so ist mir das Lokalitätsprinzip in diesem Rahmen so einiges Wert.
Ste-Re
 
Posts: 8
Joined: 18. November 2006 18:17

Postby kekster » 23. November 2006 13:13

Entschuldige, aber es gibt nicht -einen- vertretbaren Grund den Code nicht vom Design zu trennen. Selbst in so alten -Sprachen- wie HTML wird das Design in CSS ausgelagert.

In einer Datenbank werden -Daten- abgelegt - und nichts anderes. Wenn du dort spezifischen Code hinterlegst, solltest du dich fragen, ob das sinnvoll ist. Falls nicht und es kommt lediglich nur auf ein if ( $db['bla'] == 1) then ... hinaus, empfehle ich auch hier einen Einsatz einer Template Engine. Wenn die Seite so -dynamisch- sein soll, wie du sagst, kannst du auch mehrere Templates benutzen...

Es ist nicht nur "sauberer", sondern definitv übersichtlicher, nützlicher, wartbarer und auf jeden Fall sinnvoller (!) den Code strikt vom Design zu trennen. Jeden anderen Tipp, den ich dir geben -könnte-, widerspricht meinem Gedanken vom -sauberen- programmieren und würde dich nur in die falsche Richtung leiten.

Daher mein ernst gemeinter Tipp: Beschäftige dich mit Smarty (oder irgend einer anderen Template Engine - oder programmiere eine kleine Klasse selber) und komm von dem Gedanken weg, dass man eine HTML Seite einfach mit <?php-Tags spickt, um zum Ziel zu kommen.

Gruß
Hinzufallen ist keine Schande - Liegen zu bleiben dagegen verachtenswert
kekster
 
Posts: 19
Joined: 15. November 2006 10:28
Location: Paderborn

Postby guwapo » 23. November 2006 14:09

muss kekster vollkommen recht geben.

aber:
html ist keine programmiersprache sondern eine formatierung.

@Ste-Re:
du hast das prinzip noch nicht so verstanden.

beispiel:
- infoausdb.html >>
<b>{TITLE}</b> {NAME}<br>

- start.html >>
<html>(...)
{INHALT}
(...)</html>


- index.php >>
-> infoausdb.html mittels file_get_contents() in string
-> mysql abfrage + schleife, mittels str_replace {TITLE} und {NAME} mit werten aus der db ersetzen und nem string $tmp "hinzuaddieren" $tmp .= (...)
-> start.html mittels file_get_contents() in nem string
-> {INHALT} mit $tmp ersetzen und in string $output speichern
-> $output ausgeben mittels echo


damit haste code + html (design) 100%ig getrennt. und auf jedenfall besser als wenn du in deiner index.php überall echos hast..
guwapo
 
Posts: 14
Joined: 13. November 2006 00:28

Postby kekster » 23. November 2006 14:26

guwapo wrote:html ist keine programmiersprache sondern eine formatierung.


Hast du natürlich absolut recht. Daher auch -Sprache- und nicht Sprache :D. Mir fiel nur kein besserer Ausdruck ein. Danke für die Belehrung.

Und gutes, kurzes und knackiges Beispiel für den Template Einsatz. War ein bisl zu faul, das selber aufzuschreiben :)

Gruß
Hinzufallen ist keine Schande - Liegen zu bleiben dagegen verachtenswert
kekster
 
Posts: 19
Joined: 15. November 2006 10:28
Location: Paderborn

Postby Ste-Re » 23. November 2006 16:36

Hallo und danke für die kritschen Anregungen.
Um das ganze mal etwas konkreter darzustellen. Bei dem Projekt handelt es sich um eine 'eigene' CMS Entwicklung (also keine Verwendung bestehenden Systeme, aber eben nicht von mir - ich erweitere das ganze "nur").
Der Weg über Templates zu gehen ist sicherlich stilistisch und im Rahmen einer vernünftigen Wartbarkeit sinnvoll, jedoch aktuell aufgrund des erhöhten Zeitaufwands nicht zweckmäßig.
Meine aktuellen Überlegungen gehen dahin, die derzeit benötigten Funktionalitäten abzubilden, ohne das ganze Projekt neu auf zu rollen. Dieser Schritt - langfristig mal angedacht - würde dann über ein OS CMS wie Joomla oder Typo3 realisiert werden.
Was die Trennung von Design und Inhalt angeht, so stimme ich euch zu, dass dies nach Möglichkeit immer Ziel sein sollte, jedoch ist es schwierig das nachträglich in ein 'mittelgroßes' System einzupflegen. Wieder konkret. Aktuell haben wir große Anteile in externe CSS Dateien ausgelagert. Die Abtrennung der DB-Punkte ist jedoch etwas aufwändiger, da wir darin z.B. News gespeichert haben, die in einem entsprechenden Layout angezeigt werden sollen. Der 'dynamsiche' Aspekt dahinter ist demnach eng mit der Darstellung verwoben. Mittelfristig werde ich mich aber mal mit dem von "guwapo" gezeigten Mechanismen auseinander setzen - vielleicht gelingt mir ja damit eine Auftrennung des ganzen.
bis dahin werde ich aber, aus Zeitgründen, gezwungen sein die Kombination von HTML und PHP-echos zu behalten. Also nochmal die eingangs gestellte Frage - welche Variante wäre 'das kleiner Übel'? Den HTML Anteil in echo Tags packen oder nur die benötigten Punkte in <?php ?>-Tags setzen?
Ste-Re
 
Posts: 8
Joined: 18. November 2006 18:17

Postby kekster » 23. November 2006 16:55

Ste-Re wrote:da wir darin z.B. News gespeichert haben, die in einem entsprechenden Layout angezeigt werden sollen.


Klingt aber stark nach Template :)

Ste-Re wrote:welche Variante wäre 'das kleiner Übel'?


Ich glaube, das nimmt sich nicht viel. Die Frage ist dann wohl eher, was weniger Schreib-Aufwand benötigt.

<?php
echo "blabla" . $bla . "blabla";
?>

oder

blabla <?php echo $bla; ?> blabla

Wenn du in 1.000 Zeilen HTML nur 5 Variablen einfügst, wäre es Blödsinn alle 1.000 Zeilen in ein echo zu packen. Andersrum, wenn du nur 5 Zeilen HTML hast, aber etwa 50 Variablen einbetten musst, wäre ein echo schon angebrachter...

Sorry - da will ich keine Empfehlung abgeben. Ich bezweifle, dass es da ein -geringeres- Übel gibt. Wenn es dich jedoch interessiert, kannst du ja mal einen kleinen Benchmark basteln und deine Ergebnisse hier posten - mich würde es interessieren :).

Viel Erfolg
Gruß
Hinzufallen ist keine Schande - Liegen zu bleiben dagegen verachtenswert
kekster
 
Posts: 19
Joined: 15. November 2006 10:28
Location: Paderborn

Postby Ste-Re » 23. November 2006 17:04

Klingt aber stark nach Template :)


OK, dann ist das mal wieder so eine klassische Definitionsgeschichte - ab wann gilt etwas als Template? ;-)

Was den Benchmark angeht schau ich mal was ich einrichten kann. Wenn es die Zeit hergibt und ich mich mal mit Benchmarken in PHP beschäftige bau ich mal was.
Ste-Re
 
Posts: 8
Joined: 18. November 2006 18:17


Return to PHP

Who is online

Users browsing this forum: No registered users and 9 guests