PHP 1
1 WelkomstberichtFoutafhandeling meten variabelenBasis Debugging in PHP
๐ฏ WatLeerdoelen
- Je
leertweethoewatjedevariabelenverschillende typen PHP-fouten zijn (Errors
,Warnings
,Notices
). - Je kunt foutmeldingen in PHP interpreteren.
- Je kunt
gebruikenfoutweergaveominstellen meterror_reporting()
enini_set()
. - Je kunt basisprincipes van foutafhandeling toepassen (zoals
isset()
,empty()
,file_exists()
). - Je gebruikt debuggingtechnieken zoals
echo
,print_r()
envar_dump()
. - Parse error: fout in de code (bijvoorbeeld vergeten ; of haakje).
- Fatal error: code probeert iets wat niet kan, bijvoorbeeld een
persoonlijkefunctiebegroetingdietenietmaken.bestaat. - Warning:
leerfoutmelding,jemaar de code gaat door. - Notice: melding van iets wat
hetwaarschijnlijkverschilfout istussen(bijv.hetnietoverschrijvenbestaandevanvariabele).
๐ก Uitleg๐ Soorten fouten in PHP
โ๏ธ |
Context
Je helpt een buurtvereniging met hun nieuwe website. Ze willen bezoekers welkom heten op een persoonlijke manier. Jij bouwt een testversie waarin de naam en leeftijd hardcoded zijn in PHP.
Stap 1: Bouw je PHP-script
verbergen
<?php
$mijnNaam// =Toon alle fouten
ini_set("Random"display_errors", 1);
$mijnLeeftijd = 23;
$mijnNaam = "Foobar";
$mijnLeeftijd = $mijnLeeftijd + 1;
echo "Welkom, ik heet $mijnNaam en ik ben $mijnLeeftijd jaar oud."error_reporting(E_ALL);
?>
Wat
โ ๏ธ valtOp een live website wil je op?foutmeldingen verbergen voor gebruikers. Gebruik dan:
ini_set("display_errors", 0);
๐ Veelgebruikte foutafhandelingstechnieken
Inisset($variabele)
PHPโbegintcontroleertelkeof een variabelemetbestaat.empty($variabele)
โ controleert of een$.variabele leeg is.Infile_exists("bestand.txt")
PHPโsluitcontroleertje elke commando af metof een;bestand bestaat.$mijnNaamdie("Foutmelding")
=of"Random";exit()
stopt de waarde "Random" in de variabele $mijnNaam$mijnLeeftijd = 23;โ stopt hetgetalscriptinbij eenvariabeleernstige$mijnLeeftijdfout.echo
โ handig om waardes snel te tonen.Letprint_r($array)
opโdattoontjedegetalleninhoudzondervan""eenenarraystringsof object.var_dump($variabele)
โ toont type + waarde (=woorden)ook handig bij fouten met"" moet beschrijven,getallen).
๐ ๏ธ Debuggen zonder debugger
Vraag: Wat denk je dat dit afdrukt?
Denk eerst na zonder uit te voeren. Schrijf je verwachting op, en test het daarna in je browser.
Tip: de code wordt regel-voor-regel van boven naar beneden uitgevoerd.
Stap๐ ๏ธ 2:Opdracht Reflecteer1 โ Debugging oefenen
|
Stap 3: Gebruik AI
Gebruik ChatGPT om te vragen: "scriptbestand datgenaamd een naam en leeftijd toont, en volgend jaar wordt de leeftijdkorting.php
met 1 verhoogd."
Plak de gegenereerde code onder jouw eigen versie.Wat doetdezecode hetzelfde? Wat is anders?Wat zou je verbeteren of verduidelijken aan de AI-versie?
Inleveren
Een PDF-document met jouw voorspellingen, antwoorden op de vragen, en je reflectie over de AI-code
2 Fouten vinden en oplossen
Wat ga je leren?
|
Context
Een collega heeft je gevraagd een foutje in zijn PHP-code op te lossen. Hij krijgt een wit scherm of een foutmelding, maar weet niet wat er mis is. Jij gaat deze fout opsporen en uitleggen.
Stap 1: De foute code
Plak deze code in PHP05-jouw-naam.php:
<?php
function berekenKorting($mijnNaam = "Random";prijs, $mijnLeeftijdNukorting) ={
23;return $mijnLeeftijdVolgendJaarprijs =- $mijnLeeftijdNu+1prijs * $korting / 100;
}
echo "ikberekenKorting(100); heet// $mijnnaamFout! enTweede ikparameter ben $mijnLeeftijd jaar oud, volgend jaar ben ik $mijnLeeftijdVolgendJaar oud.";ontbreekt
?>
Stap
2:
error_reporting()
Voerzodat het script uit en kijk naarje de foutmeldingen.waarschuwing Pas de code aan totdat het werkt. Als het gelukt is, zie je een zin zoals:
ik heet Random en ik ben 23 jaar oud, volgend jaar ben ik 24 oud.
Stap 3: Reflectievragen
|
Stap 4: Gebruik AI
Vraag aan AI: "Wat is er fout aan deze PHP-code en hoe kan ik dit oplossen?"
<?php
$mijnNaam = "Random";
$mijnLeeftijdNu = 23;
$mijnLeeftijdVolgendJaar = $mijnLeeftijdNu+1
echo "ik heet $mijnnaam en ik ben $mijnLeeftijd jaar oud, volgend jaar ben ik $mijnLeeftijdVolgendJaar oud.";
?>
Wat zegt AI dat de fouten zijn?ziet.Was dat duidelijk voor jou?Was er iets dat AI nรญet opmerkte, maar jij wel?
Inleveren
Een PDF-document met een antwoord op de reflectievragen.
3 Strings en variabelen begrijpen
Wat ga je leren?
|
Context
Je maakt een stukje code voor een online inschrijfformulier. De gegevens van een nieuwe deelnemer worden opgeslagen in variabelen en daarna op het scherm getoond. Zo krijgt de bezoeker direct een bevestiging te zien, bijvoorbeeld: โWelkom, Ali Gaona!โ
Stap 1: Test de basis
Maak een nieuw bestandGebruik PHP06-jouw-naam.php en plak deze code:
<?php
$voornaam = "Alexandra";
$achternaam = "Gaona";
echo $voornaam . " " . $achternaam;
echo "Alexandra" . " " . "Gaona";
?>
Vraag: Wat denk je dat dit afdrukt?
Verwacht je een verschil tussen regel 5 en regel 6? Test het en bekijk de output zorgvuldig.
Stap 2: Variaties testen
Wijzig regel 2 en geef$voornaamjouw eigen naam.Wat gebeurt er met de uitvoer?Verander ook$achternaam. Wat verandert er dan?
Reflectievragen
|
Stap 3: Gebruik AI
Beantwoord de reflectievragen en vraag AI of jouw antwoorden goed zijn. Als ze niet goed zijn laat AI jouw uitleggen waarom het fout is.
Inleveren
Word- of PDF-document met een copy van jouw Chat-script.
4 Strings 2 โ lengte en hoofdletters
Wat ga je leren?
|
Context
Je werkt mee aan een formulier voor een sportclub. De namen van deelnemers worden verwerkt, en het systeem controleert automatisch of de naam lang genoeg is en zet hem om in hoofdletters voor op een badge. Jij maakt een testversie van dit systeem.
Stap 1: De basiscode
Maak een bestand PHP07-jouw-naam.php en plak deze code:
<?php
$voornaam = "Ali";
$achternaam = "Bakir";
echo "Naam in hoofdletters: " . strtoupper($voornaam . " " . $achternaam) . "<br>";
echo "Aantal letters in voornaam: " . strlen($voornaam);
?>
Stap 2: Test en pas aan
Verander de voornaam en achternaam naar je eigen naam.vangen.WatTestverandertwat erin de uitvoer?Voeg een extra<br>toe voor betere opmaak (zoals hierboven al verwerkt).
Reflectievragen
|
Stap 3: Gebruik AI
Vraag aan ChatGPT: "Hoe kan ik in PHP een naam omzetten naar hoofdletters en deecho
lengteom vante dezien voornaamwat meten?"
๐ง Reflectie
- Wat is het verschil tussen
deeenoplossing van AIwarning enjouweeneigenfatalcode?error? GebruiktWaaromAIisanderehetfunctieshandigofom fouten wel te tonen in de ontwikkelfase, maar niet op eenandereliveaanpak?website?- Welke
versiedebuggingtechniekvindvond jeduidelijkerhetofmeestbeter leesbaar, en waarom?bruikbaar?
๐ค Inleveren
PHP07-jouw-naam.Lever het bestandkorting.php
in.- Lever een korte uitleg in (.txt of .pdf) waarin je aangeeft:
- Welke fout(en) je hebt gevonden
- Welke techniek je gebruikte om het op te lossen
- Wat je ervan geleerd hebt
- Je kunt bestanden aanmaken, lezen, schrijven en toevoegen met
jouw aangepaste codePHP. PDFJeofweetWord-bestandwanneermethetantwoordenhandig is om gegevens in bestanden opdetereflectievragen en jouw korte AI-vergelijking
2 Bestanden en Loggen
๐ฏ Leerdoelen
5 Geboortejaar berekenen met PHP
Wat ga je leren?
|
Context
Je helpt bij het makenplaats van een registratiesysteemdatabase te gebruiken.
๐ก Uitleg
๐ Waarom bestanden gebruiken?
Bestanden kunnen handig zijn voor eenvoudige opslag zoals instellingen, bezoekerslogs of tijdelijke data. In kleine projecten is dit vaak eenvoudiger dan een sportkamp.database.
๐ organisatorBestandsfuncties wilin automatischPHP
file_put_contents("bestand.txt",
laten"tekst")zien op basis van de opgegeven leeftijd. Jijโ schrijfteentekstkleinnaarscriptbestandom(overschrijft).file_get_contents("bestand.txt")
teโtesten.leest
inStaphele1:bestandBasiscodeMaakรฉรฉn keer.fopen()
+fwrite()
โ uitgebreidere controle (bijv. toevoegen).file_exists("bestand.txt")
โ controleert of bestand bestaat.fclose()
โ sluit een bestand (nodig bij
).PHP08-jouw-naam.phpfopen()
๐๏ธ Loggen: fouten en plakgebeurtenissen dezebijhouden
Een logbestand houdt bij wat er gebeurt in een script. Bijvoorbeeld foutmeldingen of bezoekersactiviteit.
Voorbeeld โ logregel opslaan:
<?php
$leeftijdmelding = 17;"[" . date("Y-m-d H:i:s") . "] Foutmelding\n";
file_put_contents("error.log", $huidigJaarmelding, = 2025;
$geboortejaar = $huidigJaar - $leeftijd;
echo "Je bent ongeveer geboren in het jaar $geboortejaar."FILE_APPEND);
?>
FILE_APPEND
zorgt dat de nieuwe regel onderaan toegevoegd wordt in plaats van het bestand te overschrijven.
Stap๐ ๏ธ 2:Opdracht Variaties1 testenโ bezoekersteller.php
- Maak een nieuw bestand
bezoekersteller.php
. - Laat het script een teller bijhouden in
teller.txt
:- Bestaat het bestand nog niet? Begin bij 1.
- Zo niet? Lees het getal in, verhoog met 1, en schrijf het terug.
- Toon het aantal bezoeken op het scherm.
๐ ๏ธ Opdracht 2 โ gastenboek.php (uitbreiding)
- Maak een script waarin een gebruiker een bericht kan achterlaten via een formulier.
- Sla elk bericht op in
gastenboek.txt
met datum/tijd. - Toon de laatste 5 berichten boven het formulier.
- Gebruik
htmlspecialchars()
om invoer veilig weer te geven.
๐ง Reflectie
VeranderWat zijn dewaardevoor- en nadelen van
gegevens$leeftijdnaaropslaanjouwineigeneenleeftijd.bestand ten opzichte van een database?Wat is de uitvoer? Klopt dit met jouw echte geboortejaar?Verander$huidigJaarnaar een andere waarde, bijvoorbeeld 2030. Wat gebeurt er dan?
Reflectievragen
Een functie kan iets ingewikkelds doen, zonder dat je telkens opnieuw de details hoeft te schrijven. Je hoeft niet telkens opnieuw de hele berekening te typen. De functie โverbergtโ die logica. Je kunt functies in een apart bestand zetten, bijvoorbeeld Je kunt ook meerdere functies in รฉรฉn bestand zetten, zoals: Gebruikers maken fouten. Hackers doen het expres. Daarom controleer je altijd of een formulier goed is ingevuld voordat je ermee werkt. Superglobals zijn ingebouwde variabelen in PHP die overal beschikbaar zijn. Je gebruikt ze bijvoorbeeld om gegevens uit een formulier op te halen. Een associatieve array is een array met 'sleutels' in plaats van indexnummers: Formulieren leveren ook associatieve arrays op via Een sessie is een manier om informatie te onthouden zolang een gebruiker actief is op de website. Bijvoorbeeld: je logt in en blijft ingelogd op alle paginaโs. Je kunt sessiegegevens gebruiken zolang de browser open is (of tot je ze verwijdert met Een webpagina โvergeetโ wat er net gebeurd is zodra je hem ververst. Daarom moet je zelf bijhouden wat de toestand (state) is van je applicatie. Je kunt dat doen met sessies, cookies of door gegevens op te slaan in In plaats van een Bijvoorbeeld: als iemand een bericht achterlaat in een formulier, voeg je dat date() .htmlspecialchars() .Extra (optioneel)
๐ง Reflectie
๐ค Inleveren
8 Inleiding tot PHP Include-logica en Templatebestanden๐ฏ Leerdoelen
๐ก Uitleg๐งฑ Waarom opdelen in componenten?Als je meerdere paginaโs hebt met dezelfde header of footer, is
๐ Verschil tussen include en require
๐ Voorbeeldstructuur
๐ ๏ธ Opdracht 1 โ templatestructuur
๐ง Reflectie
๐ค Inleveren
9
|