Vanliga fel och felmeddelanden
Lär dig känna igen de vanligaste felen och läsa vad PHP försöker säga.
Varför fel dyker upp sent
PHP kompileras inte i förväg, och språket är dynamiskt typat. Det betyder att många fel upptäcks först när just den raden körs. En sida kan fungera i veckor tills någon hamnar i en gren av koden som innehåller ett fel.
Vanliga fel:
- saknade semikolon
- klammerparenteser som inte stängs
- odefinierade variabler, ofta på grund av stavfel
- felaktiga arraynycklar
- logiska fel: villkor som inte fungerar som tänkt
Läs felmeddelandet
Ett felmeddelande innehåller tre saker: typ av fel, vad som är fel och var (fil och rad).
Parse error: syntax error, unexpected token "echo", expecting "," or ";" in test.php on line 4
| Typ | Betyder | Vanlig orsak |
|---|---|---|
| Parse error | Koden går inte att tolka. Ingenting körs. | Saknat ;, {, } eller citattecken |
| Warning | Något är fel, men koden fortsätter. | Odefinierad variabel eller arraynyckel, till exempel ett $_POST-värde som inte finns |
| Fatal error | Koden stoppas på den raden. | Anrop till en funktion eller klass som inte finns |
Vid ett Parse error pekar radnumret på stället där PHP upptäckte felet. Själva felet ligger ofta på raden före.
Parse error
Kör koden och läs felmeddelandet. Rätta sedan felet.
Warning
Här körs koden, men med en varning. Vad är fel?
Fatal error
Här stoppas koden mitt i. Vilken rad skrivs aldrig ut?
Logiska fel
Det svåraste felet ger inget felmeddelande alls: koden körs, men gör fel sak. Vad är fel här?
= tilldelar ett värde, medan == och === jämför. if ($alder = 18) sätter alltså åldern till 18, och eftersom 18 räknas som sant körs alltid den första grenen. Felet är så vanligt att det är värt att kontrollera först när ett villkor beter sig konstigt.