PHP, varningar efter uppdatering till PHP 8

Permalänk

PHP, varningar efter uppdatering till PHP 8

Har precis uppdaterat till PHP 8.0 vilket lett till att jag fått en massa varningar om "Undefined array key" och "Undefined variable", vilket även står om i dokumentationen på php.net. Tips på hur jag kodar om följande exempel på ett snyggt sätt för att undvika dessa varningar?

  • Warning: Undefined array key "page":

if (is_numeric($_REQUEST["page"])) { $pagenumber = $_REQUEST["page"]; } else { $pagenumber = 1; }

  • Warning: Undefined variable $test:

echo "Variabel som finns risk att den är odefinierad: $test";

Permalänk
Medlem

Det finns ett långt svar på Stackoverflow om båda felen.

Exempel 1 borde alltså se ut såhär:

if (isset($_REQUEST["page"]) && is_numeric($_REQUEST["page"])) { $pagenumber = $_REQUEST["page"]; } else { $pagenumber = 1; }

För odefinierade variabler är rekommendationen att du deklarerar dem explicit, alltså:

$test = ""; echo "Variabel som inte är odefinierad: $test";

(ska tillägga att jag inte testat koden, utan enbart gått på vad som står i svaret jag länkade)

Visa signatur

Citera eller nämn gärna mig (@ToJa92) om du svarar på något jag skrivit.
Uppskattar du eller blir hjälpt av ett inlägg jag skrivit är jag tacksam om du gillar det.

Permalänk

Tack så mycket för både svar och länken. Var lite det jag misstänkte också, men ville få det bekräftat ifall det kanske fanns nåt bättre, enklare eller snyggare sätt. Känns dock spontant lite onödigt att få varningar bara för att det är en tom variabler då den inte direkt ställer till något, men men. Bara att rätta sig i ledet och justera mina script ifall jag ska köra med PHP 8...

Permalänk
Medlem

Ja PHP är lite lattjo det går utmärkt att anropa variabler som inte är deklarerade. Fast du bör alltid göra det om du vill skriva snygg och begriplig kod.

Här kommer ett exempel på hur du kan löse samma sak med mindre kod.

$pagenumber = is_numeric($_REQUEST["page"] ?? '') ? $_REQUEST["page"] : 1;