Hello,
Sicher ist der (=mein) Code Müll. Ich hatte allerdings den Eindruck, er wolle bewußt auf globale Variablen zugreifen. Die Lösung mit der Variablenübergabe ist prinzipiell natürlich die sauberste.
Na, aber er/sie ist darauf abgefahren auf diese antiquierte Idee aus CP/M-Zeiten. Da gab es nur ein Segment und es war so ziemlich wichtig, keinen Platz zu verschenken. Man hat eben auf jeden Wert direkt zugegriffen. Rekursion war undenkbar.
(He, man könnte doch auch mit eval ... *g*) (Schmarn)
Ja, könnte man auch. Setze ich seit längerem intensiv ein und so langsam habe ich auch ein Gefühl dafür bekommen, wie es sicher funktioniert. Man muss den eval()-Aufruf nur in eine Template-Hüllfunktion packen. Dann ist alles im grünen Bereich.
function show_record($record[],&$daisychain[])
...
lade Eval-String
eval($record["show"])
...
Verändere DaisyChain
...
return obs geklappt hat.
endOfFunction
Selbstverständlich kann eval() auf alle Super-Globalen Variablen des Scriptes zugreifen. Eval kann auch auf das Dateisystem zugreifen. Eval kann SQL-Queries ausführen, eval kann...
Also sollte man deshalb niemals eine externe Quelle mit eval() auswerten.
Eval ist der Zwischenschritt von klassischer Top-Down-Prgrammierung zur _echten_ OOP, die PHP ja mangels Scopes nicht kann.
Grüße
Tom