PHP8: if($var) > undefined variable
Sinds PHP 8 moet ik echter eerst $var declareren, wat ik nog wel eens vergeet en dan tot fouten leidt. Is dit het nieuwe werken of kan het anders? Ik vind het niet altijd even handig namelijk.
bij de ‘basics’ uit waarom:
Relying on the default value of an uninitialized variable is problematic in the case of including one file into another which uses the same variable name.
Met andere woorden: is er ergens een server-side include waarin toevallig ook een $var voorkomt, dan wordt het gedrag van je code onvoorspelbaar en mogelijk onveilig.
Het is een slordigheid die je maar beter kunt afleren. De PHP Manual legt al Relying on the default value of an uninitialized variable is problematic in the case of including one file into another which uses the same variable name.
Met andere woorden: is er ergens een server-side include waarin toevallig ook een $var voorkomt, dan wordt het gedrag van je code onvoorspelbaar en mogelijk onveilig.
Wees concreet: schrijf uit wat je verwacht. Mag $var bijvoorbeeld niet leeg zijn, gebruik dan if (!empty($var)), moet $var een integer zijn, gebruik dan if (is_int($var)), enzovoort.
En als ik het volgende zou doen, krijg ik nog altijd de undefined fout?
Gewijzigd op 26/09/2023 12:32:53 door Veur Heur
Kennlijk ga je soms een bepaald stuk code door, waardoor $var een betekenis krijgt. Maar "bestaat niet" heeft kenenlijk ook een betekenis bij jou?
Simpelste is om $var bovenin je script een default waarde te geven.
Alternatief is om bij stukken code die soms overgeslagen worden, een ELSE op te nemen.
"Bestaat soms niet" is een slordige manier van werken.
Voorbeeld waarom:
Uit je contactformulier komt $Telefoonnummer.
En je query doet iets met "insert into tabel .... values ($telefoonnummer)"
Als je dan onderdrukt of je variabelen soms niet bestaan, dan wordt dus nergens $Telefoonnummer opgeslagen. (hoofdletter)
Je wilt dergelijke fouten niet hebben.
Variabelen die je gebruikt bestaan, of krijgen in een regel voor het eerst een waarde en worden daarmee gedefineerd.
Zoek niet een oplossing voor "ik krijg ineens een foutmelding" (wat niet eens iets is wat aan php8 ligt, maar kennelijk onderdruk je dergelijke meldingen als 10 jaar)
Toevoeging op 26/09/2023 15:30:18:
En ja: de manual zegt
https://php.net/empty
"Determine whether a variable is considered to be empty. A variable is considered empty if it does not exist or if its value equals false. empty() does not generate a warning if the variable does not exist."
Dat is een workaround als je per se niet vooraf je variabelen netjes wilt definieren.