PHP voor beginners: Deel 3 van 3

Erik-Jan Bulthuis

29 november 2006

Opmerking:
Deze tutorial is het laatst geupdate 29 november 2006. In eerdere stadia zijn enkele passages en/of correcties aangebracht door Willem-Jan van Dinter, waarvoor hartelijk dank.

Deze cursus bestaat uit 3 delen.

Inhoudsopgave

  1. Wat is PHP?
    1. De geschiedenis van PHP
    2. Wat kun je met PHP?
    3. Waarom PHP?
  2. Server side scripting
    1. Client side/server side
  3. PHP Syntax
    1. PHP & HTML
    2. Commentaar
    3. Variabelen
    4. Output
  4. Variabelen
    1. Integers & doubles
    2. Strings
    3. Booleans
    4. Arrays
    5. Objecten
  5. Controle structuren
    1. If, else & elseif
    2. For-loop
    3. While-loop
  6. Functies
    1. Voorgedefinieerde functies
    2. Zelf functies maken
  7. Enkele losse opmerkingen
    1. Databases
    2. PHP testen
      1. PHP lokaal draaien
      2. PHP installeren
      3. Hosting services
    3. Bronnen
  8. literatuurlijst

6 Functies

Als je je eigen scripts gaat ontwikkelen zul je er achter komen dat je bepaalde stukken code vaker zult gebruiken. Dit is veel typwerk, terwijl het in feite steeds hetzelfde is. Om dit wat makkelijker te maken zijn er functies ontwikkeld. Functies zijn eigenlijk niks meer dan stukjes code waar je een paar variabelen in stopt en er andere variabelen of output uit krijgt. Kijk maar eens naar onderstaand plaatje wat je misschien nog herkent van groep 3 op de basisschool.

plaatjeFunctie PHP voor beginners: Deel 3 van 3
Figuur 1: Een hele simpele functie

Dit ‘machientje’ zoals het zo mooi in de basisschool-boekjes staat is in feite een functie. Je stopt 2 getallen in het machientje (ook wel parameters of argumenten genoemd), er wordt iets mee gedaan in de functie (in dit gevallen worden ze opgeteld) en er komt output uit (in dit geval de som).

Functies aanroepen

Een functie roep je heel eenvoudig aan. De syntax voor een functieaanroep is zo ongeveer functie_naam (parameter 1, parameter2, .....). Het aantal argumenten verschilt per functie (sommige functies hebben helemaal geen parameters nodig). Als de functie een variabele teruggeeft, moet deze uiteraard ‘opgevangen’ worden. Dat doe je daar er gewoon een variabelenaam met een toewijzingsoperator voor te zetten: $variabele_naam = functie_naam (parameter1, parameter2, .....).

Scope van variabelen

Variabelen binnen functies kunnen niet zonder meer buiten de functies gebruikt worden. Ook andersom gaat dit op: een variabele buiten een functie heeft niet dezelfde waarde binnen een functie. Om een technische term te gebruiken: de scope (bereik) van de variabelen is beperkt.

Als je een variabele buiten een functie toch in de functie wilt gebruiken kun je 2 dingen doen: (1) je kan de variabele meegeven als parameter of (2) je kan de variabele globaal maken. De eerste optie heeft 2 nadelen, namelijk (a) dat het niet echt een handige methode is voor grote hoeveelheden variabelen die je buiten het scope wilt halen en (b) het werkt de andere kant op niet: het is erg lastig om meedere functie-variabelen buiten de functie te halen.

Dan blijft alleen nog de optie over om de variabelen globaal te maken. Globaal betekent niks meer en niks minder dan dat de variabelen zowel in de functie als buiten de functie gelden. Een variabele maak je globaal door gebruik van het keyword global: global $variabele_naam; Onderstaande code bevat 1 voorbeeld waarin de variabele $naam niet uitgelezen kan worden in de functie terwijl dat in het tweede voorbeeld wel kan.

/* Voorbeeld waarbij het mislukt */

function toon_naam (){
echo $naam;
}

$naam = "Erik-Jan";
toon_naam(); // Roep de functie aan.
// Er is geen output omdat de variabele $naam in de functie geen waarde heeft

/* Voorbeeld waarbij het goed gaat */

function toon_naam (){
echo $naam;
}

global $naam;
$naam = "Erik-Jan";
toon_naam(); // Roep de functie aan
// De output is "Erik-Jan" omdat de variabele globaal is en dus ook uitgelezen kan worden in de functie
?>

6.1 Voorgedefinieerde functies

PHP beschikt over een groot arsenaal reeds bestaande functies. Deze functies staan in de code van de PHP Engine en zijn grotendeels geschreven in de programmeertaal C, net als een groot deel van de rest van de code. Hoe deze functies gedefinieerd zijn weten we dus, maar we weten wel wat ze doen en hoe ze werken.

In de manual staan alle beschikbare functies uitgelegd, compleet met voorbeelden. Graag had ik een aantal van deze functies uitgelegd, maar helaas is dat hier niet goed mogelijk. Wat ik wél wil doen is uitleggen hoe de functies in de manual zijn uitgelegd.

Ik neem als voorbeeld de functie min. Deze functie retourneert het minimum van een rij getallen, maar hoe staat dat nu uitgelegd in de manual? In de manual staat ongeveer het volgende (het kan zijn dat dit gedurende de tijd een klein beetje wordt aangepast, maar de wijzigingen zullen klein zijn):

number min ( number arg1, number arg2 [, ...])
number min ( array numbers)

De functieuitleg begint dus met het woord number. Dit geeft aan wat voor type return er uit de functie komt rollen. In dit geval is dat dus een getal (een number in het algemeen, kan dus zowel een integer als een double zijn). Het had ook bijvoorbeeld een string of een boolean kunnen zijn. Soms staat er op deze plaats het woord void wat aangeeft dat er een ‘lege’ output wordt teruggegeven, dus helemaal niks.

Het tweede wat we tegenkomen is de naam van de functie. Hier is niks bijzonder aan. Vervolgens zien we tussen de ronde haken ( en ) een aantal argumenten staan. Weer zien we het keyword number dat aangeeft dat de variabelen numbers moeten zijn. We zien dat er 2 argumenten zijn gegeven gevolgd door [, ....]. Dit is in de manual een notatie dat aangeeft dat er meer variabele van het zelfde type mogen zijn. Let op: mogen. Rechte haken [ en ] geven aan dat het argument optioneel is. Als je bijvoorbeeld het minimum van 4 getallen wilt hebben kun je gewoon 4 parameters in de functie-aanroep zetten. Het is echter niet mogelijk om hier bijvoorbeeld strings neer te zetten.

Samenvattend betekent deze eerste regel dus dat we minimaal 2 parameters aan de functie moeten geven, maar mogelijk meer. Alle argumenten moeten numbers zijn en de output is ook een numbr (namelijk het laagste getal).

De tweede regel van de uitleg verteld ons dat het ook mogelijk is om slechts 1 argument te geven: dan moet het echter wel een array zijn gevuld met minimaal 2 numbers (ik geef toe: het getal 2 staat in dit verband nergens, maar het is wel logisch he: het minimum van 1 getal heeft weinig betekenis!).

6.2 Zelf functies maken

Uiteraard kun je in PHP ook zelf bepaalde handelingen automatiseren in functies. In PHP doe je dat volgende de volgende syntax:

function functie_naam ($parameter_1, $parameter_2, ....){
// De functie-code.....

// Eventueel een return
return $variabele;
}
?>

Je ziet dus dat een declaratie moet beginnen met het keyword function. Vervolgens komt de functienaam en eventuele parameters. Het is niet verplicht parameters toe te voegen in de functie-declaratie, maar de ronde haakjes ( en ) zijn wel verplicht! Vervolgens komt uiteraard de functie-code zelf en eventueel wordt er iets gereturned vooraf gegaan door het keyword return.

7 Enkele losse opmerkingen

7.1 Databases

Deze cursus gaat niet over databases, maar een kopje ‘databases’ mag toch niet ontbreken. De grote meerderheid van PHP scripts maakt namelijk gebruik van diverse databases zoals ik ook al in hoofdstuk 1 heb gezegd.

Als je wat meer over databases voor PHP wilt weten, raadt ik je aan eens te kijken naar de cursus over SQL op deze site. PHP draait namelijk in 99% van de gevallen met een SQL database als MySQL of PostGreSQL.

7.2 PHP testen

7.2.1 PHP lokaal draaien

Op je eigen PC kun je PHP-bestanden testen. Het handigst is hiervoor dat je even het pakketje PHPDev even downloaden. In dit pakket zit de webserver Apache, het database systeem MySQL en uiteraard PHP zelf. Dit pakket is heel simpel te installeren en vervolgens kun je je PHP bestanden in de www map zetten. Als je dan in je browser http://localhost/ typt kun je je bestanden testen.

7.2.2 PHP installeren

Mocht je om de één of andere reden niet tevreden zijn met PHPDev, dan is het natuurlijk ook mogelijk om PHP zelf te installeren. Ik adviseer dit niet voor beginnende gebruikers omdat het (1) voor beginnende gebruikers geen meerwaarde boven PHPDev heeft, (2) omdat het installeren een klein stukje ingewikkelder is en (3) omdat het snel fout kan gaan.

Als je het dan toch wilt je op www.php.net de nieuwste versie van PHP downloaden en deze aan de hand van de handleiding in de manual installeren en configureren. Je zult dan ook Apache en MySQL moeten installeren tenzij je een andere combinatie van server software, database software en PHP wilt hebben.

7.2.3 Hosting services

Verreweg de makkelijkste optie om PHP-bestanden te testen is het nemen van een account bij een hosting service. Een groot aantal van deze diensten zijn financieel gezien gratis, maar de "prijs" die je er voor betaald zijn banners, lage uptimes (de server ligt vaak "plat") of vervelende spam mails. Daarom is het misschien een beter idee om een betaalde account te hebben. Als je wilt weten waar je het beste terecht kunt kun je even kijken op www.internetten.nl.

7.3 Bronnen

Hieronder volgen een aantal websites waar je meer naslag en informatie kan vinden over PHP.

  • www.php.net
    Dit is de officiële site van PHP. Je vindt hier een uitgebreide (deels Nederlandstalige) manual met commentaren en verbeteringen van enkele duizenden PHP’ers.
  • www.zend.com
    Dit is de officiële site van de ontwikkelaars van de script-engine van PHP. Je vindt hier veel tutorials, scripts en tips. LET OP: vooral voor de gevorde gebruiker!
  • www.phpfreakz.nl
    De grootste Nederlandstalige PHP-community. Enorm veel informatie te vinden in bijvoorbeeld het forum of de script library. Uiteraard zijn er ook enkele tientallen artikelen. Het niveau, vooral op het forum, ligt helaas af en toe wat aan de lage kant.
  • netters.nl
    Snel groeiend website voor webdesigners en -developers. Vrij veel tutorials en goede hulp op het forum. Vooral een aanrader voor mensen met meerdere interesses!

Hieronder volgen een aantal links naar sites waar je bepaalde editors kan downloaden.

8. Literatuurlijst

Boeken
  • MySQL/PHP Database Applications
    Jay Greenspan & Brad Bulger
    Mandtbooks
    ISBN: 0-7645-3537-4
Artikelen/Tutorials