2. Elementaire constructies

Een PHP-bestand is eigenlijk een HTML-pagina met één of meer PHP-scripts in, die je opslaat met extensie *.php
De scripts worden op de server uitgevoerd door de parser en die geeft een HTML-pagina terug aan de browser. De gebruiker ziet de PHP-scripts niet.

2.1. Eerste voorbeelden

Enkele regels om op weg te raken:

Oefening: maak onderstaande pagina vb1.php, bewaar ze in een submap onder je lokale webserver (vb: htdocs voor Xampp of inetpub voor IIS) en test in de browser met URL: localhost/submapNaam/vb1.php


<!DOCTYPE html>
<html>
  <head>
    <title>voorbeeld 1 PHP</title>
    <meta charset = "UTF-8" />
    <style>
      body {font-family:"Tahoma","Arial",sans-serif; }
      h1 { border:2px ridge #CCCCCC; }
    </style>
  </head>
  <body>
    <?php
      echo "<h1>Even testen</h1>";
    ?>
    <p>Dit is gewone tekst</p>
  </body>
</html>

2.2. Constanten en variabelen

PHP is een "loosely typed language": variabelen moeten niet expliciet gedeclareerd worden vooraleer je ze kan gebruiken – al doe je dat best wel – en het type ervan wordt afgeleid uit de context, het gebruik.

Syntax: $varNaam = waarde;

Constanten declareer je met functie define(), bv: define("ONDERGRENS",10);
De naam van een constante bestaat uit hoofdletters (dit is een conventie, geen intrinsieke verplichting).

Oefening:

2.2.1. Datatypes

De basistypes van waarden in PHP-variabelen zijn:

typevoorbeeldcontrole
boolean$var = TRUE of $var = FALSEis_bool($var)
integer (geheel getal)$var = 0is_int($var) of algemeen is_numeric($var)
float (kommagetal)$var = 2.5is_float($var) of algemeen is_numeric($var)
string (tekst)$var = "hallo"is_string($var)

Nog enkele nuttige functies in dit verband:

  • Het type van de waarde in een variabele kan je opvragen met gettype($var)
  • var_dump($var) geeft als output het type en de waarde van de variabele
  • Bestaat de variabele? isset($var) geeft true (1) of false (0) als resultaat
  • empty($var) bestaat ook; die geeft TRUE als de variabele niet bestaat, geen waarde toegekend kreeg (NULL), gelijk is aan 0 of ""

Verder kan je een variabele casten naar een ander type, bv: van $x = 0; kan je een boolean maken met een cast: (boolean)$x.

Oefening:
Schrijf een eenvoudig testprogramma om de conversie naar boolean te testen.
Maak de volgende variabelen, cast ze naar boolean en druk telkens het resultaat af:

  • $a met waarde 12
  • $b met waarde 0
  • $c met waarde 1.23
  • $d met waarde 0.0
  • $e met waarde "0"
  • $f met waarde "test"
  • $g met waarde NULL

2.2.2. Scope

PHP kent vier soorten scope of bereik voor variabelen:

  • local: variabele die binnen een functie gedeclareerd wordt en alleen binnen de functie bestaat;
  • global: variabele die buiten een functie gedeclareerd wordt. Ze wordt NIET herkend binnen een functie.
    Om ze binnen een functie te gebruiken, roep je ze op met global: global $globVar;
    Ofwel gebruik je de default array van globals: $GLOBALS['globVar']
  • static: lokale variabele die haar waarde onthoudt als de functie afgesloten wordt en weer aangeroepen.
    Je declareert ze met het woord 'static', bv. static $var = 0;
  • parameter: lokale variabele die gedeclareerd wordt in de functie-aanroep.

Oefening:

Maak de tabel hiernaast: voorbeeld

  • De getallen zitten in variabelen, de verschillen zijn berekend.
  • De tabel zelf is gewoon in HTML, niet PHP.

2.2.3. Magic quotes

Pas op met aanhalingstekens! Je kan in PHP zowel enkele als dubbele aanhalingstekens gebruiken om tekst te omsluiten, maar gebruik ze niet willekeurig door elkaar!

  • Een string tussen enkele quotes is letterlijke tekst, die niet geëvalueerd wordt, gewoon getoond.
  • Een string tussen dubbele quotes wordt wel geëvalueerd, je kan er variabelen en escape codes (bv. \n = nieuwe regel beginnen) in opnemen.

Een goede raad:

  • Gebruik enkele quotes alleen om letterlijke tekst zonder speciale tekens of variabelen te omsluiten;
  • Gebruik enkele quotes in een letterlijke tekst tussen dubbele aanhalingstekens, o.a. om HTML-opties aan te geven of een afkappingsteken in een woord te typen.
  • Typ geen variabelenamen gewoon tussen de tekst, maar gebruik het concatenatieteken . (punt)
  • Heb je toch een extra "letterlijke" quote nodig in een tekst, gebruik de escapecode: \' of \"
    Dit geldt ook voor een backslash: \\

2.3. Operatoren

De toekenningsoperator hebben we al gebruikt, om een waarde aan een variabele toe te kennen: $a = 4;
Bij wiskundige toekenningen kan je een korte vorm gebruiken, bv. $a = $a + 5; is hetzelfde als $a += 5;

De belangrijkste tekstoperator is het concatenatieteken, de punt, om stukken tekst te combineren.

De vergelijkingsoperatoren en logische operatoren zullen we bij de selectie bekijken.

Blijven nog de wiskundige operatoren.
Voor de voorbeelden vertrekken we van $a = 5; en $b = 2;

operatorbetekenisvoorbeeldresultaat
+optellen$a + $b7
-aftrekken$a - $b3
*vermenigvuldigen$a * $b10
/delen$a / $b2.5
%modulus, rest van de deling$a % $b1
++waarde verhogen met één (postincrement)$a++6
--waarde verlagen met één (postdecrement)$b--1

Oefening: vertrek van twee integervariabelen met waarden 5 en 2 en zorg voor volgende output, in font Tahoma:
Even tellen
5 + 2 = 7
5 - 2 = 3
5 x 2 = 10
5 : 2 = 2.5
De rest van de deling van 5 gedeeld door 2 is 1
5 + 1 = 6
2 - 1 = 1

2.4. Selectie

De kortste vorm van de ALS-constructie is:
if (voorwaarde)
  statement;

Moeten er meer commando's uitgevoerd worden bij één if, dan verzamel je die instructies in een blok, met accolades:
if (voorwaarde) {
  statement 1;
  ...
  statement n;
}

Uiteraard kan er een ANDERS-tak bijkomen (meer statements = verzamel in blok):
if (voorwaarde)
  statement ALS;
else
  statement ANDERS;

Zijn er meer dan twee keuzemogelijkheden, dan bouwen we verder met elseif:
if (voorwaarde 1)
  statement ALS 1;
elseif (voorwaarde 2)
  statement ALS 2;
...
elseif (voorwaarde n)
  statement ALS n;
else
  statement ANDERS;

In plaats van een lange elseif-constructie kan je ook een switch/case gebruiken:
switch($var) {
  case waarde1:
    statement(s);
    break;
  case waarde2:
    statement(s);
    break;
  ...
  default:
    statement(s);
}

Verder kent PHP ook de 'korte if' of ternaire operator: (voorwaarde) ? statement DAN : statement ANDERS;

In de voorwaarde hebben we vergelijkingsoperatoren nodig:
==  is gelijk aan
!=  is verschillend van
 is kleiner dan
 is groter dan
<=  is kleiner dan of gelijk aan
>=  is groter dan of gelijk aan
=== is gelijk aan EN van hetzelfde type
!== is verschillend van in waarde en/of type

Verder kan je voorwaarden combineren met de logische operatoren:
&& en       || of       ! niet

Oefening 1

Oefening 2kleuren

2.5. Iteratie

Loopings voer je uit met while, do/while, for of foreach.

while: zolang de voorwaarde TRUE is, wordt het codeblok herhaald.
while (voorwaarde)
{ statement(s); }

do/while: voer het codeblok eenmaal uit en blijf het herhalen zolang de voorwaarde TRUE is.
do
{ statement(s);
} while (voorwaarde);

for: voer het codeblok uit vanaf beginwaarde, zolang de voorwaarde geldt, met een bepaalde stapwaarde
for(initialisatie; voorwaarde; stap)
{ statement(s); }

foreach: wordt gebruikt om alle elementen van een array te doorlopen
foreach ($reeksvar as $element)
{ statement(s) met $element in; }

Kleine oefeningen

Nog een oefening:
Stel de vermeningvuldigingstabel op die hiernaast getoond wordt.
Zorg er voor dat de grootte van de tabel eenvoudig veranderd kan worden, d.w.z. voorzie een variabele $grootte, hier = 5.