Les 08 — Abstractie, inheritance & interfaces
Abstracte classes, subclasses, pass-by-reference, en interfaces als “contract”.
Begrippen
- Abstract class / abstract method — niet los instantiëren
parent::,self::vs$this- Pass-by-value vs pass-by-reference (
&) interface+implements
Demo
opdrachten/08/: bear.php, bear_grizzly.php, opdracht20_bear.php, vehicle_abstract.php, pass_val_ref_*.php, User.php + show_user.php, fruit_example.php, classy.php
Open demo-bron
Klik een bestandsnaam hieronder om de bron op deze pagina te zien (of “Nieuwe tab”). PHP zelf draait bij jou lokaal in XAMPP.
Gewone opdracht
Opdracht 20
Werk de Bear-class uit (zie demos). Toon properties van class én subclasses als string (niet alleen var_dump). Maak subclass Grizzly met boolean method roars(). Bestanden onder 08/.
Extra / variant
Extra A — Opdracht 21 Interface Identifier
Implementeer interface met o.a. setId/getId, checkFileName() (jpg/png/gif), showImage(), showPassport() in class User. Toon resultaat in een show-script.
Extra B Pass-by-ref lab
Maak 08/pass_ref_lab.php dat het verschil value vs reference toont (eenvoudig + met object/class), met korte uitleg in de output.
Extra C Abstract vehicle
Bestudeer/nabouw vehicle_abstract.php: leg in 08/abstract-notitie.md uit waarom je een abstracte class niet direct new kunt doen.
Check
- Grizzly bestaat en
roars()werkt. - Properties zijn als leesbare string zichtbaar.
Opleveren
git add 08→ commit → push- Mail: les 08 klaar of hulp + repo-link