"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

PHP: eval oder outputbuffer!?

orpheus 07.02.2004 - 20:43 510 8
Posts

orpheus

in a nutshell
Avatar
Registered: Mar 2002
Location: Klagenfurt
Posts: 533
Servus!

Tjo, hab eine XML Datei mit einer Liste von aktiven/vorhandenen Modulen. Das Ganze sieht <b>vereinfacht</b> in etwa so aus:
Code:
<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)
Registered: Sep 2000
Location: Vienna / SF
Posts: 6131
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

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25423
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!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
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)
Registered: Sep 2000
Location: Vienna / SF
Posts: 6131
wenn wir beide das selbe unter "dynamisch konstruktoren aufrufen" verstehen dann tuns variable variablen auch

Code: PHP
$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
Avatar
Registered: Mar 2002
Location: Klagenfurt
Posts: 533
Also erstmal sorry, sollte ich hier mich entweder total unfähig auszudrücken oder mein bisheriger Gedankengang völliger Schwachsinn sein :cool: :D

Zitat von funka
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.

Zitat von funka
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.

Zitat von funka
edit2: und was soll ueberhaupt der vergleich von eval (birne) und file (apfel)?
Ich mag Obst :D 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.

Zitat von mat
ä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
Avatar
Registered: Mar 2002
Location: Klagenfurt
Posts: 533
Zitat von funka
wenn wir beide das selbe unter "dynamisch konstruktoren aufrufen" verstehen dann tuns variable variablen auch

Code: PHP
$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 ;) :bash::rolleyes::D Funktioniert das nur mit PHP5!?

tia

funka

Legend
ex-prophet(down below)
Registered: Sep 2000
Location: Vienna / SF
Posts: 6131
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
Code: PHP
$funcname = "blakuh_".$var;
$somereturnvalue = $funcname($var,$bla);

orpheus

in a nutshell
Avatar
Registered: Mar 2002
Location: Klagenfurt
Posts: 533
Zitat von funka
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
Code: PHP
$funcname = "blakuh_".$var;
$somereturnvalue = $funcname($var,$bla);

Supi, dann DANKE! an alle für die kompetente Hilfe ;):)
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz