isset() - Worin liegt der Sinn?

S

spex

Moin,

ich programmiere nun seit mehreren Jahren in PHP und überprüfe Variablen jeher mit if($var == ''), ich hab nie verstanden warum ich isset() nehmen sollte.
Isset prüft ja nur darauf ob die Variable initialisiert wurde also nicht NULL ist.

Wenn sie gesezt ist (mit $var = '';) und ich sie mittels isset() überprüfe, dann gibt es true zurück obwohl die Variable leer ist.

Irgendwas verwechsle ich weil in Tutorials früher immer isset() benutzt wurde um zu sehen ob die Variable leer ist.

Vielleicht klärt mich mal einer auf :)
 
Variablen müssen in PHP erst deklariert werden, bevor Lesezugriffe auf sie möglich sind. Das ist bei anderen Sprachen aber auch nicht anders. Nur dass bei PHP eben die isset()-Funktion verwendet werden muss/kann, was bei anderen Sprache mit einem var != null oder ähnlichem funktioniert.
PHP bietet aber leider die Möglichkeit, diesbezügliche Fehlermeldungen zu unterdrücken, was die Qualität und Portabilität des Codes verschlechtert.
 
Ich hab das bisher nur in Bereichen gemacht wo es wirklich nötig war, seien es Sicherheitskritische Bereiche... aber bei Kleinigkeiten wie Schleifen (Vom Schleigen Kopf abgesehen), Aufzählungen, mach ich mir nicht die Mühe vorher die Variable zu initialisieren.
Ich erkenne die Vorteile nicht ausser etwas aufgequollenerer Code.
 
Der Vorteil ist ein sauberer, portabler Code. Das von dir als aufgequollen bezeichnete, ist ganz einfach Sorgfalt.
 
Wenn sie gesezt ist (mit $var = '';) und ich sie mittels isset() überprüfe, dann gibt es true zurück obwohl die Variable leer ist.
Ob eine Variable einen Inhalt hat wird ja schon von empty() überprüft, somit wäre es auch sinnfrei wenn isset() das ebenfalls tun würde.
Nur der Vollständigkeit zu gute, der Rest wurde ja schon geklärt. ;)

Btw.: Gumbo, wie hast du das Wort "isset" so hervor gehoben? Ich finde bei den Buttons des Standard-Editors nix was dazu passen könnte. :confused:
 
empty() kannte ich nicht, wie gesagt hab es immer anders überprüft.
Dann ergibt das auch alles einen Sin.

Gumbo: Sorgfalt, welchen Vorteil hat sie in -dem- Fall? Soll keine Provokation sein, ist eine ernstgemeinte Frage.

DeluXe: Ja is richtig. Wär aber nicht das erste mal das es ein ALIAS für irgendeine ominöse Funktion wäre.
 
Mit Sorgfallt meint er warscheinlich, dass man so Programmiert, das keine Fehlermeldungen kommen.
Um zu Überprüfen, ob z.B. eine Session schon gestartet wurde oder nicht und um sie gegebenen Falls zu starten.
 
Noch ein anderer Grund:
Ohne eine Variable zu deklarieren, ist es nicht nur unsauber, sondern kann auch Fehler im weiteren Programmablauf erzeugen.

Was ist, wenn du eine Variable bspw. prüfen willst, ob sie false ist?
Ohne sie vorher zu deklarieren, würde dies wahr sein, aber eine nicht deklarierte Variable und eine Variable mit dem Wert false(oder von mir aus auch NULL, 0 oder einem leeren String)...das sind 2 ganz unterschiedliche Paar Schuhe.
 
Zurück