PHP: eval oder outputbuffer!?
orpheus 07.02.2004 - 20:43 511 8
orpheus
in a nutshell
|
Servus! Tjo, hab eine XML Datei mit einer Liste von aktiven/vorhandenen Modulen. Das Ganze sieht <b>vereinfacht</b> in etwa so aus: <module name="STYLESHEETS" url="stylesheet.php" />
<module name="FOOTER" url="footer.php" />
Nun hab ich mir das so gedacht: Ich müsste den Output (wird dann an ein Array angehängt "MODUL" => "OUTPUT" und dann später von einer TE geparsed) eben dieser Module (jedes enthält PHP Code ) abfangen. Nun gibt's meines bescheidenen Wissens nach 2 Möglichkeiten: 1.) Über file("http://domain.at/file.php");. 2.) Über eval(); Tja, was ist schneller!? eval oder file!? Gibt's einfachere Methoden ein modulares CMS zu realisieren!? Lösungsansätze, Vorschläge, Codesnippets!? tia
Bearbeitet von orpheus am 08.02.2004, 13:07
|
funka
Legend ex-prophet(down below)
|
dein ziel ist es auf anderen webservern platzierte php files aufzurufen? edit: falls nicht seh ich den tiefern sinn des arrays nicht ein normaler modulehandler der jeder modul klasse zum richtigen zeitpunkt die gewuenschten ressourcen gibt bzw sie aufruft ist da afaik der normale weg edit2: und was soll ueberhaupt der vergleich von eval (birne) und file (apfel)? kann mich bitte wer dumm dastehen lassen ? - ist schon etwas spaet und ich sehr mued
|
mat
AdministratorLegends never die
|
file.. die funktion? oder meinst du include bzw. require? ähm.. zu modularem cms: ich versteh deine arbeitsweise über xml nicht ganz. imo lässt sich das genauso über templates realisieren, die imo mehr vorteile haben (vorrausgesetzt das system wird gut implementiert). vielleicht bin ich auch schon zu müde um das zu verstehen
|
atrox
in fairy dust... I trust!
|
dynamische inkludieren hab ich über include() gelöst, um aber dynamisch konstruktoren aufzurufen, braucht man in php4 das eval().
|
funka
Legend ex-prophet(down below)
|
wenn wir beide das selbe unter "dynamisch konstruktoren aufrufen" verstehen dann tuns variable variablen auch $foo = "whatever_".$name;
$test = new $foo($vars,$bla);
dafuer ist kein eval notwendig, anyway muss da php5 fuer eine saubere loesung her @mat: er verwendet das xml file nur als eine art config file in dem steht welche php files er includen soll die frage von orpheus kommt imho dennoch nicht klar raus
|
orpheus
in a nutshell
|
Also erstmal sorry, sollte ich hier mich entweder total unfähig auszudrücken oder mein bisheriger Gedankengang völliger Schwachsinn sein dein ziel ist es auf anderen webservern platzierte php files aufzurufen? Nein. Ich hab nur in einigen Foren gelesen, dass es über file möglich ist den Output eines PHP Scripts als HTML zu kriegen und diesen dann als String weiterzuverwenden. edit: falls nicht seh ich den tiefern sinn des arrays nicht Der oben beschriebene Output soll/kann dann im Array unter Umständen weiter bearbeitet werden. edit2: und was soll ueberhaupt der vergleich von eval (birne) und file (apfel)? Ich mag Obst Nein. Ich war/bin nur der Meinung, das es einerseits die Möglichkeit gäbe z.B. footer.php einzulesen und dann über eval zu parsen oder aber den html output gleich über file zu bekommen s.o. ähm.. zu modularem cms: ich versteh deine arbeitsweise über xml nicht ganz. imo lässt sich das genauso über templates realisieren, die imo mehr vorteile haben (vorrausgesetzt das system wird gut implementiert). Das ganze CMS basiert nur auf XML (Daten, Einstellungen, Modulparameter). Achja die TE hab ich selber geschrieben deshalb unterstützt sie derzeit noch kein block-parsing o.ä. Allerdings überlege ich jetzt ernsthaft auf FastTemplate,IntegratedTemplate oder SmartTemplate umzusteigen.
Bearbeitet von orpheus am 08.02.2004, 12:50
|
orpheus
in a nutshell
|
wenn wir beide das selbe unter "dynamisch konstruktoren aufrufen" verstehen dann tuns variable variablen auch
$foo = "whatever_".$name;
$test = new $foo($vars,$bla);
dafuer ist kein eval notwendig, anyway muss da php5 fuer eine saubere loesung her So Konstruktoren aufzurufen war mir neu. Perfekt, dann wird das ganze Ding gleich OO Funktioniert das nur mit PHP5!? tia
|
funka
Legend ex-prophet(down below)
|
nein sollte afair schon bei 4.0 gehen in php5 kannst das ganze dann wirklich sauber machen ueber die ->_new() kontruktoren du kannst aber wenns dir nur um sowas geht auch simpel variable funktionen aufrufen $funcname = "blakuh_".$var;
$somereturnvalue = $funcname($var,$bla);
|
orpheus
in a nutshell
|
nein sollte afair schon bei 4.0 gehen
in php5 kannst das ganze dann wirklich sauber machen ueber die ->_new() kontruktoren
du kannst aber wenns dir nur um sowas geht auch simpel variable funktionen aufrufen$funcname = "blakuh_".$var;
$somereturnvalue = $funcname($var,$bla);
Supi, dann DANKE! an alle für die kompetente Hilfe
|