Hallo,
ich versuch mich kurz zu fassen.
Die Designklasse, die ich programmiert habe, bietet unter anderem die Möglichkeit, den Inhalt einer Datei (Template) in den Cache zu laden, um diesen bei Bedarf wieder auszugeben o. den Inhalt u.a. mit eval neu zu parsen um mit dem Ergebnis weiterarbeiten zu können.
Das klappt; wie sollte es auch anders sein, wunderbar.
Nun dacht ich mir - nehmen wir es mit der strikten Trennung von Code und Design mal nicht ganz so ernst und versuchen wir mal, die Funktion test der Klasse xyz im Template aufzurufen, um den Returnwert dieses Aufrufes zu bekommen.
In meiner naiven Welt sähe das dann im Template so aus:
Zugegeben; ich hab nicht erwartet, dass das funktioniert
Und - wer hätte das Gedacht; es funktioniert auch nicht!
Die dafür zuständige Funktion in der Klasse:
Nun die Frage; kriegt man das mit eval auf einer "nicht aufwändigen" Basis noch hin? Sonst müsst den Content wieder zeilenweise exploden und nach diesen "Abnormalitäten" im Template suchen.
Zugegeben, ist sicherheitsaspektlich betrachtet auch nicht sonderlich sinnvoll; wenn man eine Möglichkeit zu bietet, in einem Template Funktionen aufzurufen; die Klasse ist jedoch nur für den "privaten" Gebrauch und eher als Spielerei gedacht.
Bin für jeden Tipp dankbar!
ich versuch mich kurz zu fassen.
Die Designklasse, die ich programmiert habe, bietet unter anderem die Möglichkeit, den Inhalt einer Datei (Template) in den Cache zu laden, um diesen bei Bedarf wieder auszugeben o. den Inhalt u.a. mit eval neu zu parsen um mit dem Ergebnis weiterarbeiten zu können.
Das klappt; wie sollte es auch anders sein, wunderbar.
Nun dacht ich mir - nehmen wir es mit der strikten Trennung von Code und Design mal nicht ganz so ernst und versuchen wir mal, die Funktion test der Klasse xyz im Template aufzurufen, um den Returnwert dieses Aufrufes zu bekommen.
In meiner naiven Welt sähe das dann im Template so aus:
Code:
string string
$xyz->test(test);
trallla
Zugegeben; ich hab nicht erwartet, dass das funktioniert

Die dafür zuständige Funktion in der Klasse:
PHP:
function evalIt($content = "")
{
$content = empty($content) ? design::getContent() : $content; //getContent holt den Content aus dem Cache
$content = addslashes($content);
$design = design::getTemp(); //irrelevant
eval ("\$content = \"$content\";");
design::neu($content); //irrelevant
}
Nun die Frage; kriegt man das mit eval auf einer "nicht aufwändigen" Basis noch hin? Sonst müsst den Content wieder zeilenweise exploden und nach diesen "Abnormalitäten" im Template suchen.
Zugegeben, ist sicherheitsaspektlich betrachtet auch nicht sonderlich sinnvoll; wenn man eine Möglichkeit zu bietet, in einem Template Funktionen aufzurufen; die Klasse ist jedoch nur für den "privaten" Gebrauch und eher als Spielerei gedacht.
Bin für jeden Tipp dankbar!