Scripttaal php

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".


Websites

Apache
MySQL
PHP
PHP Nederlandtalige handleiding
PHP overzicht gratis hosting
PHP-info Developers Shed
PHP-info EvilWalrus
PHP-info Hotscripts.com
PHP-info Knowledge Base
PHP-info PHP Freakz
PHP-info Resource Index
PHP-info Sourceforge.net
PHP-info Startpagina
PHP-nieuws PHPDeveloper
PHP-nieuws phpEverywhere
PHP-nieuws PHPKitchen
Tijdschrift PHP Magazine
Tijdschrift php|architect


Met dank aan computertotaal!