Junior
Wat zijn magische methoden in PHP?
sobes.tech AI
Antwoord van AI
Magische methoden in PHP zijn speciale methoden die automatisch worden aangeroepen onder bepaalde omstandigheden. Hun namen beginnen met twee underscores (__).
Lijst van de belangrijkste magische methoden:
__construct(): Wordt aangeroepen bij het maken van een nieuw object.__destruct(): Wordt aangeroepen bij het vernietigen van een object.__call($name, $arguments): Wordt aangeroepen wanneer geprobeerd wordt een niet-toegankelijke of niet-bestaande methode van het object aan te roepen.__callStatic($name, $arguments): Wordt aangeroepen wanneer geprobeerd wordt een niet-toegankelijke of niet-bestaande statische methode aan te roepen.__get($name): Wordt aangeroepen wanneer geprobeerd wordt de waarde van een niet-toegankelijke eigenschap van het object te krijgen.__set($name, $value): Wordt aangeroepen wanneer geprobeerd wordt de waarde van een niet-toegankelijke eigenschap van het object in te stellen.__isset($name): Wordt aangeroepen bij gebruik vanisset()ofempty()op een niet-toegankelijke eigenschap.__unset($name): Wordt aangeroepen bij gebruik vanunset()op een niet-toegankelijke eigenschap.__sleep(): Wordt aangeroepen vóór serialisatie, geeft een array terug met de namen van de eigenschappen die geserialiseerd moeten worden.__wakeup(): Wordt aangeroepen na deserialisatie.__toString(): Maakt het mogelijk dat het object zich gedraagt als een string bij gebruik in een stringcontext.__invoke($args): Wordt aangeroepen wanneer geprobeerd wordt het object als functie aan te roepen.__set_state(array $properties): Wordt aangeroepen bij het exporteren van het object met de functievar_export().__clone(): Wordt aangeroepen na het voltooien van het klonen van het object om de kloon te configureren.__serialize(): Wordt aangeroepen tijdens serialisatie, geeft een array met gegevens terug voor serialisatie.__unserialize(array $data): Wordt aangeroepen tijdens deserialisatie, ontvangt de gegevens van__serialize().
Voorbeeld van gebruik van __construct en __destruct:
<?php
class Example {
public function __construct() {
echo "Object gemaakt\n";
}
public function __destruct() {
echo "Object vernietigd\n";
}
}
$obj = new Example();
unset($obj); // Forceer vernietiging van het object
?>
Voorbeeld van gebruik van __get en __set:
<?php
class DataStore {
private $data = [];
public function __set($name, $value) {
$this->data[$name] = $value;
}
public function __get($name) {
if (array_key_exists($name, $this->data)) {
return $this->data[$name];
}
return null; // Of een uitzondering gooien
}
}
$store = new DataStore();
$store->name = "Alice"; // Roept __set aan
echo $store->name; // Roept __get aan
?>