Auge: global /Globale Variable funktioniert nicht wie erhofft

Beitrag lesen

problematische Seite

Hallo

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

Meiner Meinung nach aber nicht, erst wenn man es weiß. Intuitiv würde ich denken (so habe ich ja auch gedacht) ich erstelle eine Variable und im nächsten Zug deklariere ich diese als globale Variable. Dass PHP dann aber den vorherigen Wert löscht, anstatt zu wissen, ah die Variable existert bereits, also nehmen wir die und machen die global, hatte ich nicht vermutet, bzw. vergessen.

Das ist eine absolute Falschinterpretation von global. Mit global erkläre ich nicht eine Variable aus dem eigenen Geltungsbereich/Scope für global verfügbar, sondern hole sie aus einem Geltungsbereich in einen anderen hinein. Typischerweise in eine Funktion, die ihren eigenen Scope hat und in dem eine nicht übergebene Variable aus dem globalen Raum schlicht nicht existiert.

Daher gehört dieser wichtige Punkt m.M.n. ins Manual. Die sind ja auch sonst bemerkenswert gut darin auf Fallstricke hinzuweisen, und das hier ist einer.

Meiner Meinung nach ist es keiner, aber das spielt für dich natürlich keine Rolle.

Zudem ist das Beispiel auf der verlinkten Dokuseite eindeutig. Erst werden die Variablen $a und $b mit global in den Geltungsbereich der Funktion übernommen und erst dann werden sie für die Addition ($b = $a + $b;) benutzt. Selbsterklärend.

Tschö, Auge

--
Ein echtes Alchimistenlabor musste voll mit Glasgefäßen sein, die so aussahen, als wären sie beim öffentlichen Schluckaufwettbewerb der Glasbläsergilde entstanden.
Hohle Köpfe von Terry Pratchett