Variabler i PHP

Innan vi börjar analysera koden från föregående kapitel, som utgör vår gästbok, så tänkte jag skriva lite om grunderna i programmering och PHP.

Vi börjar med variabler. En variabel är en behållare av data och den bästa jämförelsen jag kommer på är att jämföra det med en låda, ett fodral eller något annat som innehåller något. Ett DVD-fodral innehåller exempelvis en DVD-skiva och en låda kan innehålla ex. konserver.

I PHP-världen sparar man textsträngar, siffror och objekt i variablerna och vi kan manipulera och använda dem med hjälp av olika funktioner.

En variabel i PHP deklareras med ett dollartecken ($) följt av namnet på variabeln och personligen försöker jag namnge variabeln i enlighet med vad den ska innehålla och jag använder aldrig svenska tecken i variabelnamnet.

I vår gästbok använder vi en variabel för att lagra namnet på författaren av ett specifikt inlägg och den variabeln kallar vi för $sNamn.

Beroende på vad variabeln ska innehålla för sorts data (siffror, text eller objekt), så anger jag ett ”s”, ”i” eller ”o” eller ”obj” i gemener framför själva namnet, som jag inleder med en versal. Det har ingen som helst betydelse för datorn, men det är lättare för mig som programmerare att hålla reda på vad en enskild variabel ska innehålla.

När det gäller objekt, som ex. $mysqli innehåller, så har jag inte följt min egna regel vad gäller namngivning av variabler som innehåller objekt och jag har inte ens någon bra anledning. Det har bara blivit så.

Vi använder variabler som behållare av data av olika slag och det är variablerna vi använder för att utföra saker med den data eller de objekt de innehåller.

I vår gästbok hämtar vi inlägg i gästboken från databasen och sparar detta i variabeln $sMeddelande. Som framgår av den inledande gemenen ”s”, så handlar det om textsträngar.

Från vår gästbok vill vi lista alla inlägg som gjorts och det gör vi med hjälp av en while-loop (mer om det i senare kapitel) och denna loop körs för varje inlägg som finns i databasen. För varje loop kopieras inlägget till variabeln $sMeddelande, som därför kommer innehålla olika data för varje loop och namnet på skribenten kopieras till variabeln $sNamn.

Om det första inlägget innehåller texten ”Tack för senast!”, så kommer $sMeddelande att innehålla just ”Tack för senast!”. För nästa inlägg, som kanske innehåller ”När kommer nästa kapitel?”, kommer datan i  $sMeddelande att skrivas över med detta inlägg. Samma sak för $sNamn. Den kommer innehålla namnet på inläggets författare.

För att hämta data från databasen använder vi oss av en annan variabel, som innehåller ett objekt. Objektet i fråga är en klass, som är en uppsättning funktioner och metoder som packats ihop till en så kallad klass. Mer om det längre fram.

$mysqli heter vår variabel som innehåller objektet mysqli som är namnet på klassen som används för att interagera med MySql-databasen via PHP. Bägge heter likadant, men enligt min egna regel borde variabeln heta $oMysqli. Sen har variabeln $-tecken framför sig vilket gör den till just en variabel medan klassen enbart heter ”mysqli”.

Både namn och meddelande skrivs in i varsitt formulärfält på vår gästbokssida och i fallet med meddelandet, så skrivs det in i en textarea som kan innehålla flera rader text och därmed radmatningar. I fallet med namnet, så skrivs det på en rad utan radmatningar.

I en textarea fungerar radmatningar som de ska, men när detta data ska visas i HTML, så betyder plötsligt inte dessa radmatningar något utan all text skrivs ut på en rad (eller bryts automatiskt där tabellen tar slut).

Radmatningar kan fångas upp som ”\n” (utan citattecken) i PHP och det är dessa vi ska leta upp och ersätta med HTML-motsvarigheten för radmatning – ”<br />”.

Det vi vill göra är att leta efter ”\n” i meddelandetexten och ersätta den med ”<br />”.

Vi skulle kunna göra denna sök- och ersättning direkt i objektvariabeln $mysqli som innehåller samma data, men vill vi göra flera saker med texten, så måste vi använda en variabel då detta objekt endast kan skriva ut data. Den kan inte ta emot data, så vi är begränsade till en åtgärd.

Variabeln $sMeddelande å andra sidan kan vi härja fritt med. Vi kan läsa och skriva till och från den hur mycket vi vill och alla förändringar sker direkt.

Till att börja med vill vi ersätta alla ”\n”-tecken till ”<br />”, men därefter kanske vi vill söka efter otillåtna ord, exempelvis svordomar, könsord eller vad det nu kan vara.

Hade vi använt oss av $mysqli-objektet, så hade vi kunnat göra en av dessa saker innan vi skrev ut resultatet och räcker det, så är det ju helt okej att använda objektet direkt istället för att kopiera data till en variabel.

I fallet med namnet, så skulle vi kunna hoppa över kopieringen till variabeln $sNamn och istället skriva ut den direkt, men av ren principsak, så kopierar jag nästan alltid data från databasen till en variabel. Även om jag inte vill göra något annat än skriva ut data, så kan jag i framtiden komma på att jag vill göra något med det och då är det bra om man redan från början skapat en variabel för ändamålet.

Våra två variabler $sNamn och $sMeddelande innehåller alltså data för ”namn” respektive ”meddelande” från databasen som hämtas med hjälp av variabeln $mysqli som innehåller ett objekt för att kommunicera med MySql-databasen.

Jag vet inte om det här gjorde dig klokare vad gäller variabler, så här kommer ytterligare ett försök att bringa klarhet i vad det är.

Det är ganska vanligt att man på hemsida har något slags copyrightmeddelande längst ner på sidan i stil med ”Copyright 2014” och den återfinns på varje enskild sida.

I skrivande stund är det just år 2014, men om 12 månader så är det 2015, så då måste du gå igenom varje sida och ändra texten till ”Copyright 2015” och detta måste du göra varje år, på varje sida.

Hade det inte varit lättare att istället använda följande lilla kodsnutt:

<?php echo $sCopyright; ?>

Variabeln $sCopyright ger du värdet ”Copyright 2014” och när det blir ett nytt år, eller när du vill ändra till något annat, så ändrar du på ett ställe och förändringen skrivs ut på alla sidor där du infogat koden.

Så här gör man i regel med PHP-sidor när det gäller titeln på respektive sida. Istället för att varje sida ska heta ”PHP på svenska”, så ger man varje enskild sida ett unikt namn som har med den enskilda sidan att göra. Den här sidan, som du läser just nu, handlar om variabler i PHP och heter sålunda just det.

Värdet hämtas från databasen och kommer från titeln på det här inlägget. Jag använder WordPress som plattform för den här bloggen/hemsidan, eller vad du nu vill kalla det, och där anger man en titel för varje inlägg eller sida man skapar. Denna titel använder jag för att namnge varje sida och skulle jag vilja ändra, så gör jag det på ett ställe och förändringen slår igenom på alla sidor.

Nu hoppas jag du förstår lite bättre vad variabler är, så i nästa kapitel tänker jag gå igen while-next-loopen.

Framstår min beskrivning av variabler fortfarande som grekiska, så får du gärna lämna en kommentar i fältet nedan, så ska jag försöka omarbeta det här inlägget.

Föregående kapitel | Nästa kapitel

Innehållsförteckning

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *

Denna webbplats använder Akismet för att minska skräppost. Lär dig hur din kommentardata bearbetas.