Slik skriver du PHP
Vi tar deg med dypere inn i PHP-ens verden.
Innhold
- Om denne innføringen
- Elementær syntaks
- PHP er tilgivende
- PHP er som C
- PHP bryr seg ikke om mellomrom (whitespace)
- Semikolon
- Kommentarer
- Variabler
- Variabler – mellomlagring
- Variabler er følsomme for store og små bokstaver
- Mer om variabler
- Endre verdien til variabler
- Forskjellige typer variabler
- De forskjellige variabeltypene
- Apostrof eller anførselstegn?
- Ut-data
- Echo
- Sammendrag
- Sammendrag
Om denne innføringen
Er du en av mange som har lekt litt med HTML, men savner mer funksjonalitet? I denne artikkelserien vil vi lære deg å bruke PHP og MySQL til å lage dynamiske webløsninger, slik at du kan ta webutviklingen til et nytt nivå.
For å få best mulig utbytte av denne innføringen er det en fordel at du kan HTML og har en viss kjennskap til programmering. Dette er imidlertid ikke et krav – du skal kunne skjønne det meste uten noen som helst bakgrunnskunnskap.
Den første delen av denne guiden finner du her »
I kapittel 1 av denne guiden så vi på hva PHP er, historien til PHP og hvordan PHP installeres. Til slutt så vi på litt enkel programmering som "hello world" og inkludering av filer.
Nå i kapittel 2 vil vi se nærmere på syntaksen til PHP, altså hvordan PHP-kode skrives. Videre vil vi se grundig på variabler, og til slutt se litt på hvordan man sender ut-data fra PHP.
Ettersom det er vanskelig å forklare syntaksen til PHP uten å komme med spesifikke eksempler vil forklaringen av syntaksen og forklaringen av variabler gå litt på kryss og tvers av hverandre. Dette vil også fortsette i de neste kapitlene, hvor vi vil se på tall, matematiske operasjoner, kontroll, funksjoner og mye mer.
Bli med over til neste side, så starter vi lett »
Denne guiden er oppdatert og republisert. Originalartikkelen er fra juni 2006.
Elementær syntaks
PHP er tilgivende
Det viktigste å vite om PHP er at språket forsøker å være så tilgivende som mulig. Programmeringsspråk varierer mye i hvor strengt de krever at syntaksen blir overholdt. Hvis du for eksempel skal skrive et program som styrer et kjernekraftverk hadde det vært utrolig kjedelig hvis du hadde gjort en feil i kodingen uten at noen feilmelding kom opp.
PHP er imidlertid ikke, tro det eller ei, designet for å styre kjernekraftverk. PHP startet opp som en skriptsamling som enkelt skulle kunne installeres på personlige nettsider. Filosofien er i dag at programmereren skal gi et minimum at informasjon, og PHP-parseren skal selv forsøke å finne ut resten.
PHP kan imidlertid ikke lese tankene dine, og vil gi beskjed hvis syntaksereglene er så grovt brutt at PHP ikke forstår hva du har tenkt at skal gjøres. Når du ser ordene
parse error
indikerer det at du har en feil i syntaksen din, og at PHP-parseren gir beskjed om dette.
PHP er som C
PHP sin syntaks har lånt mange elementer fra programmeringsspråket C. Er du en av de heldige som har programmert i C før har du en stor fordel, for PHP er ikke så ulikt C. Lurer du på hvordan noe skrives i PHP, så forsøk å skrive det slik du ville skrevet det i C.
PHP starter alltid med taggen
<?php
, og slutter med
?>
. Alt innenfor vil bli tolket som PHP-kode, og behandlet deretter av PHP-parseren.
Man kan også starte PHP-skript med
<?
, forutsatt at
short_open_tag
i
php.ini
er satt til
on
. Dette kan imidlertid by på problemer, ettersom XML-filer starter på akkurat samme måte. Jeg vil derfor anbefale å bruke
<?php
.
PHP bryr seg ikke om mellomrom (whitespace)
I PHP kan det være viktig å putte inn mellomrom, men når det først er gjort spiller det ingen rolle hvor mange mellomrom du skriver. Det samme gjelder tabs og linjeskift. Se dette eksempelet:
$variabel = 2 + 2;
$variabel = 2 + 2 ;
$variabel =
2
+
2;
Hvert av de tre eksemplene over vil fungere helt fint. Med andre ord vil ett mellomrom oppfattes som det samme som uendelig mange mellomrom.
Semikolon
I PHP er en konstatering (statement) et uttrykk (expression) som er avsluttet med et semikolon (;). Vi kan si at et uttrykk er som en frase, mens en konstatering er som en hel setning. Semikolonet indikerer at konstateringen er ferdig.
Hvis du ikke skjønner dette nå – ikke fortvil. Du vil selv kunne se dette i praksis senere i dette kapittelet og i andre kapitler.
Kommentarer
Når man skriver store skript kan det være svært nyttig å kommentere kodingen man gjør. Uten kommentering blir koden fort uoversiktlig, og det kan være vanskelig å skjønne hva den som har skrevet koden har tenkt.
Alle kommentarer vil bli hoppet over av PHP-parseren, og er der kun for at du eller en annen ved en senere anledning kan lese det.
PHP bruker samme metode for kommentarer over flere linjer som C – den starter med
/*
, og ender med
*/
/* Dette er en kommentar som
går over mange linjer.
Det siste ordet vil gi en feil,
ettersom det står
*/ utenfor
I tilfellet over vil
utenfor
bli tolket som PHP-kode, ettersom det ikke står innenfor kommentartegnene.
Vi har også alternativer for kommentarer som kun går over én linje. Her har vi C++- og Java-varianten
//
og Perl-varianten
#
.
# Dette er en kommentar
# Og enda en linje med kommentar
// Dette er også en kommentar.
// Begge disse typene støtter kun en linje med tekst,
// så det siste ordet her vil gi en
feil
Den observante leser vil se at dette ikke stemmer med det jeg sa tidligere om at PHP ikke er sensitiv for mellomrom, tabs og linjeskift (whitespace). Kjære observante leser, du har helt rett. En mer riktig måte å si det på er at PHP ikke er sensitiv for såkalt "whitespace" etter at kommentarene er tatt ut fra koden.
Variabler
Variabler – mellomlagring
Den vanligste måten å lagre informasjon i midten av et PHP-skript er å bruke variabler. En variabel har et navn og en verdi. For å kalle opp en variabel bruker vi navnet variabelen har, og tilbake får vi verdien den er lagret med.
Med andre ord er variabler et mellomlager for informasjon. Se det følgende eksempelet:
<?php
$testvariabel = "Dette er informasjonen som er lagret";
?>
I PHP bruker vi alltid et dollartegn (
$
) for å indikere at vi snakker om en variabel. Ved å bruke et likhetstegn (
=
) gir vi variabelen en verdi. På venstre siden av likhetstegnet er variabelnavnet, mens det på høyresiden er verdien til variabelen.
Skal vi nå skrive ut innholdet i variabelen gjør vi det slik:
<?php
$testvariabel = "Dette er informasjonen som er lagret";
echo $testvariabel;
?>
Dermed vil informasjonen som variabelen ved navn
testvariabel
inneholder bli skrevet ut med
echo
-funksjonen.
Variabler er følsomme for store og små bokstaver
Generelt sett sier man at PHP ikke bryr seg om forskjellen på store og små bokstaver, noe som følger filosofien om at PHP skal være tilgivende. Det er imidlertid en ting som er viktig å merke seg; navn på variabler er følsomme for forskjell på store og små bokstaver.
<?php
$variabel = 100;
echo "Variabelen med navn variabel har verdien $variabel";
echo "Variabelen med navn VaRiaBeL har verdien $VaRiaBeL";
?>
Ut-dataen du da vil se er:
Variabelen med navn variabel har verdien 100
Variabelen med navn VaRiaBeL har verdien
Variabelen med navn
variabel
er nemlig en helt annet variabel enn
VaRiaBeL
. Variabelen
VaRiaBeL
inneholder ikke noe informasjon, for den er ikke deklarert. Dette ser vi tydelig av ut-dataen.
Mer om variabler
Endre verdien til variabler
Hva hvis vi vil endre informasjonen som en variabel inneholder? Dette er selvsagt svært enkelt. Se det følgende eksempelet:
<?php
$name = "André K. Dahl";
$name = "André Kristoffer Dahl";
echo "Forfatter: $name";
?>
Her definerer vi først variabelen ved navn
name
til å inneholde teksten "André K. Dahl", for deretter å endre verdien til "André Kristoffer Dahl". Det er den sistnevnte verdien vi vil få hvis vi ber om å få verdien til variabelen. Det er i utgangspunktet ingen måte å finne ut at variabelen
name
har hatt en annen verdi før den endelige verdien.
Se det følgende eksempelet:
$car = "Volvo 850";
$old_car = $car;
$car = "BMW 5-serie 520"
echo "Min gamle bil var en $old_car. Min nye bil er en $car.";
Ut-dataen fra dette skriptet ville vært "Min gamle bil var en Volvo 850. Min nye bil er en BMW 5-serie 520".
Som du ser blir innholdet til
old_car
satt til det samme som innholdet i
car
, som er "Volvo 850". Grunnen til dette er at PHP leser fra toppen og nedover, slik at på det tidspunktet
old_car
ble definert var verdien av
car
"Volvo 850".
Forskjellige typer variabler
Det finnes en rekke typer variabler i PHP, som i alle programmeringsspråk. Disse typene spesifiserer hva slags verdier som kan bli lagret i de aktuelle variablene. Eksempelene til nå har kun tatt for seg strenger (strings), altså ren tekst.
Til forskjell fra mange andre programmeringsspråk krever ikke PHP at vi spesifiserer typen til en variabel. Dette følger PHPs filosofi om at alt skal være så enkelt som mulig, og at språket skal være tilgivende.
Til tross for at vi ikke trenger å spesifisere hva slags type en variabel er, har vi selvsagt mange forskjellige type variabler. PHP-parseren finner selv ut hva slags type en variabel er. I PHP finnes det totalt åtte typer variabler (det engelske navnet står i parantes):
- Heltall (integers) er hele nummer uten desimaler. For eksempel 145 eller -42.
- Desimaltall (doubles) er tall med desimaler. For eksempel 3.14159 eller 65.0 (PS: Husk at du må bruke punktum, ikke komma).
- Boolske variabler (booleans) har kun to mulige verdier: true eller false.
- Null er en type som kun har en verdi – null. Den brukes gjerne for å indikere at variabelen er tom.
- Strenger (strings) er flere tegn satt sammen. For eksempel "Vi benytter PHP 5.1.4".
- Arrays er navngitte og indekserte samlinger av andre verdier.
- Objekter (objects) er klasser som er definert av programmereren selv, som kan inneholde både andre typer verdier og funksjoner som er spesifikk til klassen.
- Ressurser (resources) er variabler som inneholder referanser til ressurser utenfor PHP. For eksempel en tilkobling til en database.
På neste side vil vi se nærmere på de forskjellige typene.
De forskjellige variabeltypene
Som sagt trenger vi ikke å spesifisere hva slags informasjon en variabel skal inneholde i PHP. Om det er en streng, heltall eller desimaltall er opp til PHP-parseren å finne ut. Denne jobben gjør den svært godt, men i noen tilfeller kan det være nødvendig å hjelpe den litt på vei.
<?php
$pi = 3.14 + 0.00159;
echo "Pi er omtrent $pi";
?>
Her blir resultatet av regnestykket 3.14 + 0.00159 regnet ut, og lagret i variabelen
pi
. Hvis du kjører dette skriptet vil du dermed få teksten "Pi er omtrent 3.14159". Men hva hvis du vil at variabelen
Pi
skal lagre selve teksten "3.14 + 0.00159", ikke selv regne det ut?
<?php
$pi = "3.14 + 0.00159";
echo "Pi er omtrent $pi";
?>
Alt som skulle til var å føye til noen hermetegn. Nå oppfatter PHP-parseren det som at variabelen
pi
inneholder en streng (string), og vil dermed ikke forsøke å regne det ut, men beholdet uttrykket. Ut-dataen hvis du kjører dette skriptet vil altså være "Pi er omtrent 3.14 + 0.00159".
Apostrof eller anførselstegn?
I PHP kan man i mange tilfeller selv velge om man vil benytte seg av apostrof (') eller anførselstegn ("). Mange sliter med å skjønne forskjellen, og blir overrasket når skriptene de skriver ikke fungerer som det er tenkt.
En viktig faktor å huske på er at en apostrof godt kan puttes inn mellom anførselstegn, og omvendt. Se eksempelet:
<?php
echo "I'm starting to understand this PHP-shit!";
?>
Dette vil fungere helt fint. Apostrofen vil ikke oppfattes som et tegn på at
echo
-kommandoen er over, ettersom vi i eksempelet over bruker anførselstegn. Skriver vi derimot følgende:
<?php
echo 'I'm not understanding this!';
?>
...vil vi få en feilmeldingen av typen
parse error
(unexpected T_STRING). Det er imidlertid svært stor forskjell på egenskapene til apostrof og anførselstegn.
<?php
$variabel = "Dette er verdien";
echo '$variabel';
echo '<br>'; //Linjeskift i HTML
echo "$variabel";
?>
Kjører vi dette skriptet vil vi få følgende som ut-data:
$variabel
Dette er verdien
Dette er fordi alt som står mellom apostrofer oppfattes som ren tekst. Har vi det mellom anførselstegn vil imidertid PHP-parseren oppfatte at det er en variabel, og vil skrive ut verdien av variabelen isteden.
PHP har noen bestemte tegn som vil bli erstattet av andre karakterer hvis de starter med en skråstrek av typen
\
(backslash). Disse fungerer kun ved bruk av anførselstegn ("), altså ikke ved bruk av apostrofer (').
- \n blir erstattet med en ny linje.
- \r blir erstattet med et returkarakter.
- \t blir erstattet med en tab-karakter.
- \$ blir erstattet med et dollartegn.
- \" blir erstattet med et anførselstegn.
- \' blir erstattet med en apostrof.
- \\ blir erstattet med en skråstrek av den typen (backslash).
Ønsker du dermed å skrive ut et dollartegn i samme
echo
-sekvens som du inkluderer en variabel, gjør du slik:
<?php
echo "\$dollar";
?>
Ut-dataen vi da vil få er "$dollar". Hadde vi derimot ikke brukt skråstreken hadde PHP-parseren lest det som en henvisning til variabelen med navn
dollar
.
Hvis vi derimot setter inn disse tegnene ved bruk av apostrofer, så vil selve teksten bli skrevet ut (for eksempel
\n
). Det eneste unntaket er ved bruk av
\'
, som naturlig nok vil skrive ut en apostrof. Prøv deg frem selv!
Ut-data
Echo
Til nå har vi benyttet
echo
-funksjonen til å sende ut-data fra PHP. Denne funksjonen kan benyttes på følgende måter:
echo "Dette er en tekst.";
og
echo("Dette er en tekst.");
Benytter du deg av den første metoden kan du gi flere argumenter, separert av komma:
echo "Dette er ", "en tekst.";
Hvis du forsøker å gi flere argumenter mens du bruker metode nummer to vil du imidlertid få en feilmeldingen av typen
parse error
(unexpected ',').
Kommandoen
er veldig lik
echo
, men har to viktige forskjeller.
kan under ingen omstendigheter akseptere mer enn ett argument.
, i motsetning til
echo
, returnerer en verdi som sier om
-kommandoen lyktes.
Verdien som returneres vil være
1
hvis utførelsen lyktes og
hvis den ikke lyktes. Det er svært, svært skjeldent at en
-kommando ikke lykkes, men i sære tilfeller som hvis brukeren har lukket nettleseren kan funksjonen være nyttig.
Syntaksen til
er slik:
print "Dette er en tekst"; //Skriver ut en streng
print 3.14159; //Skriver ut et tall
Sammendrag
Kapittel 2 av denne innføringen nærmer seg slutten. Nå er vi endelig på vei over kneika, så snart kan vi begynne med det som virkelig er gøy. I påvente av neste kapittel vil jeg anbefale alle og enhver å teste ut forskjellige ting. Er det noe du er usikker på? Test det ut!
Sammendrag
I dette kapittelet har vi sett at PHP er et tilgivende språk med en syntaks liknende programmeringsspråket C. Kodesekvenser i PHP starter med
<?php
og ender med ?>. Et semikolon benyttes for å indikere at en konstatering er ferdig.
Videre bruker vi
/* */
for kommentarer over flere linjer, og
#
eller
//
for kommentarer på én linje.
Variabler benyttes til å mellomlagre informasjon. En variabel defineres slik:
$variabelnavn = "variabeltekst";
. Hva slags type (desimaltall, heltall, strenger osv.) variabelen er trengs i utgangspunktet ikke å defineres.
Forskjellene mellom apostrof (') og anførselstegn (") kan virke små, men er i virkeligheten store. En variabel vil ikke skrives ut hvis man benytter apostrof, i tillegg til at anførselstegn har en god del tegn som erstattes med andre karakterer, som
\n
og
\r
.
I utgangspunktet benytter man
echo
-funksjonen til å sende ut-data til nettleseren. Man kan også benytte
, som gir tilbakemelding på om utførelsen var vellykket.
I neste kapittel vil vi se på hvordan vi sammenlikner flere verdier, og utføre handlinger basert på utfallet. I mellomtiden – lek deg litt for å bli kjent med PHP.
Den første delen av denne guiden finner du her »