Frage zu Gültigkeitsbereich von Variablen
*Markus
- php
0
Felix Riesterer
0
Der Martin
0 *Markus
Hallo,
beim Gültigkeitsbereich von Variablen bin ich derweil etwas unschlüssig. Vor allem frage ich mich, wieso folgendes möglich ist:
<?php
include_once("../check/KundenChecker.php");
$checker = new KundenChecker();
//Sicherheitsüberprüfung, da der URL-Parameter sichtbar und somit manipulierbar ist.
if (isset($_REQUEST['k'])) {
$var = $_REQUEST['k'];
//Der Übergabeparameter muss in jedem Fall überprüft werden
//Nachsehen, ob es diesen Kunden gibt
if (!$checker->checkKundenNummer($var))
exit(-1);
}
else
exit(-1);
//Fortsetzung anch der Überprüfung
echo $var;
?>
$var enthält den übergebenen Wert. Ich nahm immer an, dass Variablen in Schleifen und Verzweigungen nur lokal gelten, aber habe ich das richtig verstanden, dass Variablen, die einmal deklariert wurden, im ganzen Script gelten?
Markus
Lieber *Markus,
Ich nahm immer an, dass Variablen in Schleifen und Verzweigungen nur lokal gelten
nein, nur in Funktionen deklarierte Variablen sind lokal.
Liebe Grüße,
Felix Riesterer.
Hi,
beim Gültigkeitsbereich von Variablen bin ich derweil etwas unschlüssig.
der ist in PHP auch für mein Empfinden manchmal etwas seltsam.
Ich nahm immer an, dass Variablen in Schleifen und Verzweigungen nur lokal gelten, aber habe ich das richtig verstanden, dass Variablen, die einmal deklariert wurden, im ganzen Script gelten?
Teils, teils.
Anders als in C/C++ definiert ein neuer Block, der mit geschweiften Klammern geöffnet wird, nicht automatisch einen neuen Gültigkeitsbereich (Scope). Das geschieht in PHP nur bei der Deklaration einer Funktion.
Anders als in C ist außerdem eine globale Variable (also eine, die außerhalb aller Funktionen deklariert wird) nicht innerhalb einer Funktion verfügbar, außer man stellt sie mit der globals-Anweisung ausdrücklich der Funktion zur Verfügung.
In C ist dagegen der Zugriff "von innen nach außen" ja immer möglich.
Eine Variable, die in einem Schleifenblock oder einem if-Block deklariert ist, steht damit tatsächlich dem ganzen Script zur Verfügung - oder der ganzen Funktion, wenn sich die fragliche Passage innerhalb eines Funktionsrumpfs befindet.
So long,
Martin
Hi,
alles klar, danke.
Markus