Til hovedinnhold
GuidePHP- & MySQL-innføring: Kapittel 2

Slik skriver du PHP

Vi tar deg med dypere inn i PHP-ens verden.

Niklas Plikk, Hardware.no

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

&lt?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

&lt?

, 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

&lt?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.

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 ',').

Print

Kommandoen

print

er veldig lik

echo

, men har to viktige forskjeller.

Print

kan under ingen omstendigheter akseptere mer enn ett argument.

Print

, i motsetning til

echo

, returnerer en verdi som sier om

print

-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

print

-kommando ikke lykkes, men i sære tilfeller som hvis brukeren har lukket nettleseren kan funksjonen være nyttig.

Syntaksen til

print

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

print

, 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 »

annonse
Tek.no er en del av Schibsted Media. Schibsted Media AS og Schibsted ASA er ansvarlig for dine data på denne siden.Les mer her