De scripttaal PHP is bedacht door Rasmus Lerdorf. Voor zijn freelance-werkzaamheden plaatste hij in
1995 zijn cv online. Vervolgens wilde hij bijhouden wie zijn cv opvroeg. Hiervoor schreef hij een Perl cgi-script
dat een tag toevoegde aan de html-code van zijn webpagina. Er volgden meer tags, die later zijn
uitgebreid tot één van de meest gebruikte webtechnologieën ter wereld. De toepassing van PHP varieert van
verrijking van semi-professionele websites met forums, polls, gastenboeken et cetera tot uitgebreide applicaties,
zoals het online ticketsysteem bij Lufthansa en verschillende onderdelen van de grote Yahoo-portal. Tijd dus
om een duik te nemen in de wondere wereld van die taal waar iedereen het de laatste tijd over heeft
en het web vol mee lijkt te staan: PHP.
|
De taal
PHP is qua syntax vergelijkbaar met talen als C en Java. Laat u zich door dit aangeven
niet afschrikken. De moeilijkheidsgraad van PHP is een stuk lager dan die van de genoemde
talen en veel functionaliteit (zoals bijvoorbeeld het benaderen van databases) is al ingebouwd
in de taal. Dit maakt PHP tot een ideale taal om te leren programmeren in het algemeen, omdat u
zich kunt richten op de dingen die er echt toe doen en daarbij snel resultaat ziet. Als u de
basiselementen van PHP onder de knie hebt, zal de eventuele stap naar een andere taal dan ook
minder moeilijk zijn. Experimenteer vooral veel, want ook hier geldt: oefening baart kunst.
|
Zelf aan de slag
Vergeet even de dingen om u heen, zodat u klaar bent om te gaan doen waar het hierin
over gaat: zelf PHP-code schrijven. We zullen beginnen met de klassieke introductie tot de taal, namelijk
tekst op het scherm zetten. In onderstaand voorbeeld zie u de code geprint die
u straks kunt invoeren. Daarin wordt tekst op het scherm geplaatst met PHP.
<?php
echo("Hallo, wereld.");
?>
Deze code toont uiteindelijk de tekst "Hallo, wereld." in de browser van de bezoeker van uw website.
PHP-scripts opent u altijd met de tag <php en eindigt u met de tag ?>. Er zijn alternatieven,
maar dit is veruit de beste en meest gebruikte manier. Om tekst op het scherm te zetten is een
functie gebruikt die "echo" wordt genoemd. Wat er aan deze functie wordt meegegeven wordt op
het scherm gezet, dus in dit geval de tekst "Hallo, wereld.". Een string is een reeks van karakters, in dit
geval "Hallo, wereld.". Let erop dat u dubbele quotes plaatst om de string. Doet u dat niet, dan
zal PHP proberen de tekenreeks te interpreteren als PHP-code, wat een foutmelding oplevert.
Probeert u het gerust uit.
Wanneer u dit script vanaf uw webserver draait en u bekijkt de broncode van de pagina, zal u opvallen
dat u niet de PHP code zelf ziet, alleen de uitkomst daarvan. Dat laat dus zien dat PHP op de server
uitgevoerd wordt, en dat daarna de gegevens naar de client worden gestuurd. Dit is een belangrijk conceptueel gegeven,
en vandaar ook dat PHP gecategoriseerd wordt onder de "serverside" scripttalen.
Programma's werken met 'statements', grofweg te vertalen als 'instructies'. In het internationale
internetverkeer waar u bij het maken van websites mee te maken krijgt, is het waar verwarring mogelijk
is verstandig de Engelse termen aan het houden. Vrijwel alle statements in PHP worden beëindigd met
een puntkomma.
|
Variabelen
Een belangrijk onderdeel van vrijwel elke programmeertaal is de 'variabele'. Een variabele
kunt u zien als een opbergdoos waarin een waarde wordt opgeslagen. Elk van deze opbergdozen
heeft een naam. Via deze naam kan vervolgens gerefereerd worden naar de waarde die in die doos zit.
De waarde van zo'n variabele kan van alles zijn. Het kan bijvoorbeeld een string zijn, een getal,
of zelfs een serie van getallen en strings, zoals u later in dit artikel zult zien. De naam
van zo'n variabele in PHP mag letters, cijfers en underscores (liggende streepjes) bevatten.
Hij moet beginnen met een dollarteken, gevolgd door een letter. In onderstaand script ziet u
een aantal toepassingen van variabelen.
<?php
$getal1 = 1;
$getal2 = 3;
$totaal = $getal1 + $getal2;
$resultaat = "{$getal1} plus {$getal2} is {$totaal}";
echo($resultaat);
?>
In de code die in deze listing zichtbaar is worden twee variabelen aangemaakt, respectievelijk
getal1 en getal2, die allebei een waarde krijgen toegekend, in dit geval krijgt getal1 de waarde 1
en getal2 de waarde 3. Vervolgens creëren we nog een variabele genaamd "totaal" waarin we
het resultaat opstaan van de som van getal1 en getal2. Uiteindeljk wordt er een variabele "resultaat"
gemaakt waarin de tekst is opgenomen die we op het scherm willen laten zien. Zoals te zien is bij het
aanmaken van deze variabele, worden er accolades om de namen van de variabelen gezet. Dit is eigenlijk
niet nodig, maar het is een goede gewoonte. Op die manier worden namen van de variabelen
namelijk expliciet gescheiden van de string, zodat er geen verwarring kan ontstaan.
Wanneer het PHP-script wordt uitgevoerd, worden de verwijzingen naar de variabelen omgezet
naar de waarden van die variabelen. Als u al eens met andere programmeertalen hebt gewerkt,
vraagt u zich misschien af waarom er geen type hoeft te worden gespecificeerd wanneer een variable
wordt gedefinieerd. Dit komt omdat PHP een zogenaamde "loosely typed" taal is. Dat betekent
dat het PHP niet uitmaakt van welk type een variabele is (bijvoorbeeld een sting, integer, float, etc.),
in tegenstelling tot talen als C en Java, die "strongly typed" worden genoemd en waarbij het dus wel van
belang is dat types worden gespecificeerd.
|
Arrays
Waar een variabele gezien kan worden als een opbergdoos voor een waarde, kunt u een
array zien als een opbergdoos met meerdere vakjes. Dit wil dus zeggen dat in een array meerdere
waarden kunnen worden opgeslagen. Naar deze waarden kan ook weer gerefereerd worden door de
naam van de variabele te gebruiken in combinatie met een sleutel die aangeeft in welk vakje
er gekeken moet worden. Hoe dat gaat zie u hieronder.
<?php
$vrienden[0] = "Bert";
$vrienden[1] = "Rob";
$vrienden[2] = "Pieter";
echo("De eerste waarde in de array is {$vrienden[0]}<br>");
echo("De tweede waarde in de array is {$vrienden[1]}<br>");
echo("De derde waarde in de array is {$vrienden[2]}<br>");
?>
In dit stukje code worden 3 waarden toegekend aan de array die "vrienden" als naam heeft.
De plaats in de variabele waar elk van de waarden wordt opgeslagen, wordt bepaald door een
nummer, ook wel de sleutel genoemd. Dit nummer kan worden gespecificeerd tussen rechte haakjes
direct achter de naam van de array. Zoals u ziet is de eerste sleutel 0, in plaats van 1.
In principe hadden we ook 1 kunnen kiezen als eerste sleutel, maar de meeste programmeertalen
beginnen in veel situaties bij 0 te tellen, dus is het logischer om dat aan te houden. We roepen
na het definiëren van alle waarden de echo-functie weer aan om de waarden op het scherm te tonen.
Merk op dat bij elke echo-regel de html-tag <br> is opgenomen. Dit zorgt ervoor dat na de regel
een Enter wordt getoond, wat de overzichtelijkheid ten goede komt. Behalve nummers kunnen ook gewoon
woorden worden gebruikt om een sleutel aan te geven. Wanneer er woorden worden gebruikt, moeten
die tussen enkele quotes binnen de rechte haakjes staan: ['sleutelnaam']. Arrays waarin woorden
worden gebruikt om sleutels te definiëren worden ok wel 'associatieve arrays' genoemd.
|
Condities
Essentieel bij het programmeren is dat gekeken kan worden of een waarde voldoet aan een bepaalde
eis, oftewel een conditie. Voor de conditionele tests gebruiken we het sleutelwoord "if".
Hieronder staat een voorbeeld van het gebruik van zo'n test.
<?php
$naam1 = "rob";
$naam2 = "bert";
if ($naam1 == "rob")
{
echo("De naam is rob");
}
if($naam1 == "rob" && $naam2 == "bert")
{
echo("naam1 is rob en naam2 is bert");
}
?>
Eerst worden twee variabelen gemaakt (naam1 en naam2), die als proefmonsters dienen om onze
tests te doen. Een if-statement ontvangt tussen de haakjes een zogenaamde 'expressie'. In het
eerste if-statement wordt als expressie de code opgegeven om te kijken of de waarde van de
variabele naam1 gelijk is aan "rob". Dergelijke taken worden uitgevoerd door functies die 'operators'
worden genoemd. In dit geval gebruiken we de vergelijkingsoperator "==". Hierna wordt door middel
van accolades het blok aangeduid waarin staat wat er moet gebeuren als de opgegeven expressie
waar is. Alles wat in dit blok staat wordt uitgevoerd als de expressie juist blijkt te zijn.
In dit geval wordt er iets op het scherm getoond, namelijk dat naam1 inderdaad de waarde "rob"
heeft.
Vanzelfsprekend kunt u ook andere dingen laten gebeuren in zo'n blok. Het tegengestelde van de "=="
operator is de "!=" operator. Deze operator kijkt of de expressie juist niet waar is.
In de expressie van het tweede if-statement gebeurt iets meer. Daar wordt niet alleen gekeken
of naam1 de waarde "rob" bevat, maar ook of naam2 de waarde "bert" bevat. Met de "&&" operator
geeft u aan dat beide condities waar moeten zijn. Pas als beide condities waar blijken te zijn wordt
de code in het blok wat na de if-statement komt uitgevoerd. Naast de "&&" operator is er ook nog de "||"
operator, wat staat voor "of". Deze operator kunt u gebruiken als minimaal één van de twee expressies
aan beide kanten van de operator waar moet zijn.
|
Uitgebreide condities
Hieronder staat een nog iets uitgebreider voorbeeld van voorwaardelijke statements.
Daar ziet u na de if-statement nog een elseif-statement. Elseif kunt u gebruiken als u wilt
dat er iets specifieks gebeurt als blijkt dat de expressie die voor de elseif gegeven werd
niet waar is.
<?php
$naam = "rob";
if ($naam == "bert")
{
echo("De naam is bert");
}
elseif($naam == "rob")
{
echo("De naam is rob");
}
?>
In dit geval wordt gekeken of de variabele de naam "bert" bevat. Is dat het geval, dan
verschijnt "de naam is bert" in beeld. Zo niet, dan komen we bij de elseif. Daar wordt opnieuw
een expressie gegeven. Wanneer die expressie waar is, zal de code uitgevoerd worden die
in het blok van deze elseif staat.
Nu kunt u zich afvragen of hetzelfde niet bereikt zou kunnen worden met twee if-statements.
Jazeker. Het verschil is dat de code in een elseif uitsluitend wordt uitgevoerd als voorgaande
expressie niet waar zou zijn.
|
Lussen
In een oud programmeerboek stond eens: "computers zijn nuttig waar werken met de hand
saai en eentonig wordt". Dit komt vrij duidelijk tot uiting in lussen. Lussen ('loops' op zijn
engels) zijn, zoals de naam al doet vermoeden, herhalingen. Herhalingen zijn vervelend om met de hand
te doen. Wanneer u een stuk code tegenkomt die vaak, in wat voor vorm dan ook herhaald moet
worden, dan is er waarschijnlijk een gemakkelijkere weg. Luiheid kan leiden tot creativiteit.
Hieronder staat een voorbeeld van een lus.
<?php
$teller = 1;
while ($teller <= 10)
{
echo("{$teller}<br>");
$teller++;
}
?>
U ziet hier de 'while-lus'. De while-lus voert code uit zolang de expressie die meegegeven is aan de
while-lus waar is. In het geval van de bovenstaande code geven we als expressie mee dat de
variabele teller kleiner is of gelijk aan 10. Voordat we de lus ingaan, zetten we teller op 1.
Wanneer de lus dus begint is teller kleiner dan 10. In het blok dat volgt (net als bij de if-statements
aangegeven met accolates) gebeuren er twee dingen. Ten eerste wordt de waarde van de teller geprint.
Daarna wordt de teller met 1 verhoogd. Hoe? Door de increment-operator "++". Wanneer u twee plusjes
direct achter de naam van een variabele zet, wordt de waarde van die variabele met 1 verhoogd.
Er is ook een operator die de waarde juist met 1 verlaagt. Dit wordt de decrement-operator genoemd, die
eruitziet als "--". Wanneer we dus na de eerste keer uit de loop komen staat de teller op 2,
dus zal de expressie nog steeds waar zijn, want 2 is ook kleiner dan 10. U kunt vast wel raden
hoe het verder gaat. Wanneer het script wordt uitgevoerd staan keurig de getallen 1 tot en met 10
onder elkaar. Dit script wordt dus uitgevoerd totdat de maximale opgegeven waarde (10) bereikt is.
|
Gebruik van functies
Binnen PHP wordt veel met functies gewerkt. Een functie is een zelfstandig subprogramma.
PHP heeft enorm veel ingebouwde functies, waarvan de meeste direct tot uw beschikking staan.
Het is dus belangrijk te weten hoe deze worden gebruikt.
Functies hebben een aantal kenmerken. Ten eerste heeft een functie een naam. Een functie heeft
daarnaast een return-type. Het return-type geeft aan wat voor soort informatie de functie
teruggeeft wanneer die wordt aangeroepen. Dit kan bijvoorbeeld een string, een getal of zelfs een
array zijn. Ook kan het return-type niets zijn. Wanneer een functie geen return-type heeft,
wordt dit in de PHP-handleiding aangeduid met het woord "void".
Daarnaast hebben veel functies parameters. Parameters zijn variabelen die de functie nodig heeft om te
kunnen werken. Hieronder ziet u een toepassing van de functie "substr".
<?php
$lange_string = "hallo, ik ben een lange string";
$gedeelte = substr($lange_string, 0, 5);
echo("{$gedeelte} is een stukje van {$lange_string}");
?>
Deze functie heeft, zoals de naam al suggereert, een string als return-type. Wanneer substr
wordt aangeroepen, komt er een string terug.
De substr-functie ontvangt drie parameters. De eerste parameter is de string waaruit een gedeelte
gehaald moet worden. In ons geval zit deze string in de variabele lange_string en dus geven we
die als eerste parameter mee. De volgende twee parameters zijn 'integers' (hele getallen).
De eerste van de twee is de startpositie, de positie in lange_string waar substr moet beginnen
te kijken. De laatste parameter geeft de eindpositie weer. Daar moet substr stoppen. In ons
geval nemen we dus een gedeelte van de lange_string variabele, en wel het gedeelte van positie 0
("h", de eerste letter van de string) tot en met de positie 5 (de positie van de letter "o").
Het is bekend dat de functie substr een string teruggeeft, dus kan die in een variabele gestopt worden.
We stoppen het resultaat van de functie in de variabele "gedeelte". Zoals u kunt zien hebben we zo
het gedeelte "hallo" van de string gehaald. De resulterende zin die in beeld zal verschijnen
wordt dan: "hallo is een stukje van hallo, ik ben een lange string".
|
Met dank aan computertotaal!
|
|