PHP: eval oder outputbuffer!?

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/php_eval_oder_outputbuffer_106461/page_1 - zur Vollversion wechseln!


orpheus schrieb am 07.02.2004 um 20:43

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


funka schrieb am 07.02.2004 um 22:09

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 schrieb am 08.02.2004 um 02:14

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 schrieb am 08.02.2004 um 09:37

dynamische inkludieren hab ich über include() gelöst, um aber dynamisch konstruktoren aufzurufen, braucht man in php4 das eval().


funka schrieb am 08.02.2004 um 12:13

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 schrieb am 08.02.2004 um 12:34

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.


orpheus schrieb am 08.02.2004 um 12:38

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 schrieb am 08.02.2004 um 13:04

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 schrieb am 08.02.2004 um 13:07

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




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025