Mailinglisten-Archive |
Hi Sven, Am Dienstag, 25. Juli 2006 08:52 schrieb Sven Geßner: > wahrscheinlich gibt es hierfür eine einfache Antwort, aber ich bin > halt noch Anfänger.... das folgende Problem ist in dem Sinne keine Anfängerfrage. :-) Es ist eher eine Frage des Anwendungsdesigns. Deswegen gibt es auch eine Menge unterschiedlicher, teils gegensätzlicher Lösungansätze. Welcher davon sinnvoll ist, hängt eigentlich dann von den individuellen Umständen ab. Ohne Deine gesamte Anwendung zu kennen, kann Dir also niemand den ultimativen Rat geben. :-) > Problem: > > Ich habe eine Seite mit fertigem Desing das soweit statisch ist. > Nur der Inhalt eines Div-Containers ändert sich und soll dynamisch > eingelesen, Code ausgeführt in einer Variablen gespreichert werden > und dann ausgegeben. > > > <?php > Datei irgendwie einlesen, Code ausführen und in > Variable $content speichern. > ?> > > > <html-code> > > <?php echo($content); ?> // den Fertigen HTML-CODE ausgeben... > > <html-code> > > > Zur Zeit mache ich das mit include(), den ich dann direkt an der > entsprechenden Stelle ausführe statt "echo($content)". > > Ich denke das ist als Lösung aber nicht wirklich sauber. In der prozeduralen Programmierung einer bestehenden Anwendung würde ich das nicht als unbedingt unsauber bezeichnen. Es ist wahrscheinlich die performanteste Lösung. Es kommt also auch immer darauf an, wie Du die Prioritäten setzt. > Wie kann ich das nochmachen.. Vielleicht mit "fopen" usw. > aber wie kann ich dann den Code ausführen?? Die Codeausführung ließe sich mit eval() erreichen. Die Lösung ist aber isgesamt wenig elegant. Wenn Du schon Dateisystem-Funktionen verwenden wolltest, dann kämen anstatt fopen() aus meiner Sicht eher file() oder besser, wenn Du PHP > 4.3 hast, file_get_contents() in Betracht (+ eval()): // Datei holen $sDateiInhalt = file_get_contents('include.inc'); // Inhalt ausführen und ausgeben eval($sDateiInhalt); Ein anderer Ansatz wäre, mit der Ausgabe-Kontrolle zu arbeiten: // Datei einbinden und Inhalt ausführen ob_start(); include('include.inc'); $sErgebnis = ob_get_contents(); ob_end(); // Ergebnis ausgeben echo($sErgebnis); > Oder bin ich auf dem falschen Weg und muss das genau umgekehrt > machen, das ich die Vorlage in die PHP-datei einlese die ich ausgeben > will. Nein, Du bist eigentlich auf dem richtigen Weg. Es gibt folgende Stufen in der Entwicklung eines Programmierers: 1. Wilde Mischung von PHP und HTML, also Progammcode und Ausgabe in einer Datei. 2. Trennung von Programmcode und Ausgabe innerhalb der Datei. Programmcode oben, Ausgabe unten. Bei der Ausgabe werden weitgehend nur noch Variablen und If-Abfragen oder Schleifen werden eingesetzt. Das ist so etwa die Stufe, auf die Du jetzt zu steuerst. 3. Trennung von Programm und Ausgabe auch auf Dateiebene, d.h. die Verwendung von Templates. Eine fertige Lösung hierfür wäre das Templatesystem Smarty. Letzteres ist natürlich der optimale Ansatz, den man auch bei neu aufzubauenden Anwendungen wählen sollte. Bei bestehenden Anwendungen ist das aber nicht immer so einfach... :-) > Ich möchte keine fertige Lösung nutzen. Schade. Eigentlich solltest Du Dir einfach mal Smarty ansehen. Sehr einfach zu installieren. Sehr einfach zu benutzen, gleichzeitig aber sehr mächtig, d.h. Du kannst klein anfangen und immer mehr wachsen. :-) Viele Grüße Lutz
php::bar PHP Wiki - Listenarchive