Junior
Welke magische methoden van klassen ken je?
sobes.tech AI
Antwoord van AI
Magische methoden in PHP zijn speciale methoden die automatisch worden aangeroepen bij bepaalde gebeurtenissen. Ze beginnen met __ (dubbele underscore).
Belangrijkste magische methoden:
__construct(): Wordt aangeroepen bij het maken van een nieuw instantie van de klasse. Gebruikt voor het initialiseren van het object.__destruct(): Wordt aangeroepen bij het verwijderen van een object of het beëindigen van het script. Gebruikt voor het vrijmaken van bronnen.__call(string $name, array $arguments): Wordt aangeroepen bij het proberen aanroepen van een niet-toegankelijke of niet-bestaande methode.__callStatic(string $name, array $arguments): Wordt aangeroepen bij het proberen aanroepen van een niet-toegankelijke of niet-bestaande statische methode.__get(string $name): Wordt aangeroepen bij het proberen te verkrijgen van toegang tot een niet-toegankelijke of niet-bestaande eigenschap.__set(string $name, mixed $value): Wordt aangeroepen bij het proberen te zetten van een waarde aan een niet-toegankelijke of niet-bestaande eigenschap.__isset(string $name): Wordt aangeroepen bij het gebruik vanisset()ofempty()op een niet-toegankelijke of niet-bestaande eigenschap.__unset(string $name): Wordt aangeroepen bij het gebruik vanunset()op een niet-toegankelijke of niet-bestaande eigenschap.__serialize(): Wordt aangeroepen voordat het object wordt geserialiseerd metserialize(). Geeft een array van eigenschappen voor serialisatie.__unserialize(array $data): Wordt aangeroepen bij het deserialiseren van het object metunserialize(). Ontvangt een array van gegevens om eigenschappen te herstellen.__toString(): Staat toe dat het object als string wordt behandeld. Wordt aangeroepen bij het proberen het object als string uit te voeren (bijvoorbeeld metecho). Moet een string retourneren.__invoke(...$arguments): Staat toe dat het object als functie wordt behandeld. Wordt aangeroepen bij het proberen het object als functie uit te voeren.__set_state(array $properties): Wordt aangeroepen bij het herstellen van het object metvar_export(). Ontvangt een array van eigenschappen van het object.__debugInfo(): Wordt aangeroepen bij het gebruik vanvar_dump()op een object. Moet een array retourneren met informatie voor debugging.
Voorbeeld van gebruik van __construct en __toString:
<?php
class MyClass {
private $name;
public function __construct(string $name) {
$this->name = $name;
}
public function __toString(): string {
return "Object met naam: " . $this->name;
}
}
$obj = new MyClass("Test");
echo $obj; // Roept __toString() op
Voorbeeld van gebruik van __get en __set:
<?php
class MyClass {
private $data = [];
public function __set(string $name, mixed $value): void {
$this->data[$name] = $value;
}
public function __get(string $name): mixed {
if (array_key_exists($name, $this->data)) {
return $this->data[$name];
}
return null; // Of een uitzondering gooien
}
}
$obj = new MyClass();
$obj->prop1 = "Waarde 1"; // Roept __set() op
echo $obj->prop1; // Roept __get() op