webForumDet fria alternativet

Roligt men irriterande fel att leta efter

PHP

8 svar · 986 visningar · startad av grennfox

Medlem sedan feb. 2010177 inlägg
Frågan#1

Hallå!

Ett riktigt irriterande problem, satt och felsökte nu i ca 30 min för en kod inte funkade som den skulle. Jag skrev om koden igen och då funkade det. Gämförde ett bra tag innan jag upptäckte vad som va fel.

Här är koden se om ni kan hitta felet!!Det är den nedre raden som ger fel:

$this->mainNav .= '<li><a href="' . PATH . 'admin">Admin</a></li>';
$this->mainNav´.= '<li><a href="' . PATH . 'admin">Admin</a></li>';
Medlem sedan juni 20006 031 inlägg
#2

Förstår att det var enkelt att missa. :D

Medlem sedan feb. 2010177 inlägg
#3

Haha ju du minst sagt, specielt då man har några rader kod och man är inte helt 100 på om rad angivelsen är rätt i fel meddelandet :P

Medlem sedan feb. 20005 891 inlägg
#4

Installera Sublime Text med en "linter", t.ex. SublimeLinter så slipper du missa sånt i fortsättningen.

(Men om du inte har stängt av error reporting så borde du iofs få ett felmeddelande som refererar till exakt den raden...?)

Medlem sedan juli 20023 617 inlägg
#5

Var tvungen att skrapa på skärmen för att se om det försvann... :e

Medlem sedan sep. 20051 758 inlägg
#6

Det råkade bli som en kul gåta som ingen tydligt har gett helt rätt svar på än.

Du råkade alltså skriva $this->mainNav´ istället för det rätta $this->mainNav

Alltså en apostrof eller vad det heter efter v i mainNav, som det inte ska vara.

Det kan ju passa att ta upp sådant i PHP-avdelningen på forumet eftersom det är PHP-kod det handlar om, annars finns även Café webForum, där gåtor mer hör hemma :)

Medlem sedan feb. 20005 891 inlägg
#7

b242569 skrev:

Det råkade bli som en kul gåta som ingen tydligt har gett helt rätt svar på än.

Du råkade alltså skriva $this->mainNav´ istället för det rätta $this->mainNav

Alltså en apostrof eller vad det heter efter v i mainNav, som det inte ska vara.

Vill inte vara "den" men jag tror alla såg det rätt uppenbara "felet"...?

Medlem sedan aug. 20039 340 inlägg
#8

Det som kanske inte är helt uppenbart är det lömska i detta fel. Om koden hade varit ogiltig så TS hade fått ett syntaxfel så hade problemet varit mycket enklare att lösa. Vad som händer nu var att $this fick ett nytt attribut med namn mainNav´ och en av li-taggarna verkade bara försvinna.

För att förvirra ännu mer, medan ´ inte har någon speciell mening och kan användas (även av misstag som i exemplet ovan) i variabelnamn, så är ` ett specialtecken som är ett alias för shell_exec. Man kan med andra ord skriva något i stil med:

$files = `ls -al`;

Det är ett arv från shell scripts i UNIX, men vad tusan den syntaxen har att göra i PHP vet jag inte. Det är den typen av designbeslut som gör att vissa kallar PHP "a fractal of bad design".

Medlem sedan feb. 2010177 inlägg
#9

Jo det va en riktigt trevlig felaökning då jag oxå trodde arr de va skit på skärmen först!!

255 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)