phpbar.de logo

Mailinglisten-Archive

[php] Dateien einlesen, Code ausführen und Ausgeben

[php] Dateien einlesen, Code ausführen und Ausgeben

Sven Geßner xven at online.de
Die Jul 25 10:11:13 CEST 2006


Hallo Lutz, 
Hallo Daniel,

danke für die prompten Antworten.


[...]
>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. :-)

( Hmm, bin ich vielleicht schon weiter als ich mich einschätze.. )

Leider bin ich mehr oder weniger am Anfang der Entwicklung, also kann 
ich dazu recht wenig aussagen. Ich habe nur teilweise fertige Programme
die ich einbinden möchte. Gästebuch, blog, Galerie...
Daher wollte ich auch keine fertige Lösung.


>
>> Problem:

[...]

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

Ich dachte eval() geht nicht im Safe_mode_on betrieb..??


>
>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);
>

Geht das auch wenn ich html-code und php-code in der datei habe?
Wie muss ich den php-code kennzeichnen?
ich habe php 5.14 im webspace


>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);
>


Das ist glaube ich genau das was ich gesucht habe...


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

Genau das möchte ich weitestgehend damit vermeiden..


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

Das ist mein ziel...


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

Vielleicht stelle ich mir das zu schwer vor, ein System zu nutzen.
Ich werde mich mal daran wagen demnächst...

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

Ich habe dabei nur die Befürchtung wenn ich es nutze bzw. erstmal 
verstehe, das ich mich zuweit von der Hand Programmierung weg bewege
und den Lerneffekt nicht mehr habe...


Ich mache das alles nebenbei im Selbststudium via Büchen, Onlinehilfe
und Lerning by doing...

[...]


MfG Sven

php::bar PHP Wiki   -   Listenarchive