Der Martin: global /Globale Variable funktioniert nicht wie erhofft

Beitrag lesen

problematische Seite

n'Ahmd,

da steht aber nichts davon, wann die Global-Deklamation stattfinden muss. Bei Fhnktionen ist es schließlich auch egal, ob man sie vor oder nach ihrer ersten Benutzung im Quellcode niederlegen muss.

Entschuldige, aber das ist meiner Meinung nach selbsterklärend.

nein, so einfach ist es eben nicht. Es gibt in vielen Programmiersprachen Fälle, in denen die Definition oder sogar die Deklaration nicht unbedingt vor der ersten Verwendung erfolgen muss. Auch in PHP kann ich z.B. Funktionen aufrufen, die erst weiter unten im Quelltext definiert sind (in C bräuchte man dafür zumindest eine Vorab-Deklaration, besser noch einen Prototypen). Also warum sollte das nicht mit globals-Deklarationen ebenso funktionieren?
Die Annahme ist zumindest legitim, denn auch PHP ist ja keine reine Scriptsprache mehr, die den Quellcode streng sequentiell interpretiert - vielmehr werden auch PHP-Quelldateien "on the fly" compiliert. Warum der Compiler bei Funktionen vorausschauen kann, bei globals aber nicht, ist nicht wirklich logisch erklärbar.

Wenn ich die Variablen aus dem globalen Scope mit global in die Funktion hole (anstatt sie als Parameter zu übergeben), muss ich das natürlich tun, bevor ich sie innerhalb der Funktion benutzen möchte.

Wenn der Code streng sequentiell Zeile für Zeile interpretiert würde, könnte ich dem Argument folgen. So ist es aber nur ein suboptimal gelöstes Detail der Implementierung.

Ciao,
 Martin

--
Computer müssen weiblich sein: Eigensinnig, schwer zu durchschauen, immer für Überraschungen gut - aber man möchte sie nicht missen.