Public = mag binnen de class, subclass en erbuiten gebruikt worden.
Protected = mag binnen de class en subclass gebruikt worden.
Private = mag alleen binnen de class gebruikt worden.
Slide 5 - Slide
Wat is een constructor
Wordt uitgevoerd zodra er een instantie gemaakt wordt van de class.
Wordt gebruikt om bijv. automatisch alvast wat properties in te stellen.
Functienaam is altijd __construct()
Slide 6 - Slide
Wat is een constructor
We stellen de properties in door de class met parameters aan te roepen. Dit kan er meer dan een zijn.
Je kunt de properties van een class en de parameters van een constructor ook voorzien van stricte types.
Slide 7 - Slide
Opdracht!
Maak een class met de naam Person.
Voeg een constructor toe die twee eigenschappen initialiseert: firstName en lastName.
Voeg een methode toe genaamd sayHello() die een begroeting retourneert, bijvoorbeeld: "Hallo, ik ben [voornaam] [achternaam]!".
Maak een instantie van de class Person aan met jouw eigen voor- en achternaam.
Roep de methode zegHallo() aan en toon het resultaat op het scherm met echo.
Slide 8 - Slide
Class Inheritance
Een inherited class neemt alle eigenschappen van een andere class over, en voegt daaraan nieuwe eigenschappen toe.
We doen dit door "extends Class" toe te voegen aan de definitie.
Slide 9 - Slide
Class Inheritance
We maken een class aan met properties, een constructor en een function.
We maken een tweede class aan die de eerste class extend.
We voegen een nieuwe property toe die niet in de eerste class aanwezig was.
We maken een nieuwe constructor die de constructor van de originele class pakt, en de nieuwe property bijvoegt.
We geven de tweede class zijn eigen function.
We maken een instance van de tweede class. We kunnen nu de properties van beide classes toewijzen via de constructor.
Nu we een instantie hebben van Teacher, kunnen we van zowel de Person class als de Teacher class functies aanroepen omdat Teacher de Person class extend.
Slide 10 - Slide
Nog een opdracht!
Maak een class Device met de volgende eigenschappen: - name (bijv. "printer", "telefoon") - brand (bijv. "HP", "Apple")
Een constructor die deze twee eigenschappen instelt.
Een methode info() die bijvoorbeeld deze tekst retourneert: - "Dit is een printer van [brand]."
Maak een subclass Laptop die erft van Device:
Voeg een extra eigenschap toe: operatingSystem (bijv. "Windows", "macOS").
De constructor moet alle drie de eigenschappen aannemen en via parent::__construct() de eerste twee instellen.
Voeg een methode toonDetails() toe die de info van het apparaat laat zien en extra vermeldt wat het besturingssysteem is, zoals: - "Dit is een laptop van [brand]. Het besturingssysteem is [operatingSystem]."
Maak een object van Laptop en roep toonDetails() aan.
Slide 11 - Slide
Gratis tip:
Je kunt zelfs functies van de extended class compleet overschrijven door dezelfde functie opnieuw aan te maken.
Slide 12 - Slide
Static Functions
Static functions zijn functions die we kunnen aanroepen zonder een instantie te maken van een class.
Deze worden vooral gebruikt als een methode geen properties nodig heeft, of als we een "helper" of "utility" willen maken.
Slide 13 - Slide
Static Functions
De functies beginnen altijd met "public static function" en werkt verder zoals een normale function. We kunnen alleen geen properties
gebruiken, en de waardes moeten altijd met parameters aangeleverd worden.
We kunnen vervolgens zonder "$var = new Class" de class aanroepen. We
roepen vervolgens een static function aan
door "::" erachter te zetten, vervolgd door de functie die we willen uitvoeren.
Slide 14 - Slide
We doen een worp op nog een opdracht
Maak een class Dice.
Voeg een static method toe genaamd roll().
Deze methode moet een willekeurig getal tussen 1 en 6 retourneren (zoals een echte dobbelsteen). Zoek zelf even op internet op welke functie je daarvoor nodig hebt.
Roep de methode roll() meerdere keren aan zonder een object te maken, en toon de resultaten.
Slide 15 - Slide
Namespaces
Vergelijk het met mappen op je computer.
Stel je hebt twee bestanden met dezelfde naam, bijvoorbeeld config.txt. Dat kan zolang ze in verschillende mappen staan. Zo werkt het ook in PHP met namespaces: je kunt classes, functies of constanten met dezelfde naam hebben, zolang ze in verschillende namespaces zitten.
Slide 16 - Slide
Namespaces
Slide 17 - Slide
Namespaces
Namespaces hebben de volgende regels:
Gebruik namespace ALTIJD bovenaan een php file. Er zijn NOOIT meerdere namespaces in een bestand.
Er zijn eigenlijk liever ook niet meerdere classes in een namespaced bestand. Maak voor iedere class met dezelfde namespace een aparte .php file aan.
Roep de classes nu aan met "/Namespace/Classnaam"
Slide 18 - Slide
Namespaces
Aangezien we het liefste maar een class per file willen hebben, maar classes elkaar wel moeten kunnen extenden, kunnen we "use-statements" gebruiken om andere classes in te laden. We hoeven