Sobes.tech
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 van isset() of empty() op een niet-toegankelijke of niet-bestaande eigenschap.
  • __unset(string $name): Wordt aangeroepen bij het gebruik van unset() op een niet-toegankelijke of niet-bestaande eigenschap.
  • __serialize(): Wordt aangeroepen voordat het object wordt geserialiseerd met serialize(). Geeft een array van eigenschappen voor serialisatie.
  • __unserialize(array $data): Wordt aangeroepen bij het deserialiseren van het object met unserialize(). 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 met echo). 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 met var_export(). Ontvangt een array van eigenschappen van het object.
  • __debugInfo(): Wordt aangeroepen bij het gebruik van var_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