Magische methode __set

De magische methode __set wordt automatisch aangeroepen bij een poging om een waarde toe te kennen aan een eigenschap die niet bestaat of niet toegankelijk is in de huidige context. De methode accepteert twee parameters: de naam van de eigenschap en de waarde die wordt geprobeerd toe te kennen.

Syntaxis

phppublic function __set(string $name, mixed $value): void

Voorbeeld

Laten we een klasse maken die __set gebruikt om pogingen om niet-bestaande eigenschappen in te stellen te onderscheppen:

php<?php
  class User {
    private $data = [];
    
    public function __set($name, $value) {
      $this->data[$name] = $value;
    }
    
    public function getData() {
      return $this->data;
    }
  }
  
  $user = new User();
  $user->email = 'test@example.com';
  $user->age = 25;
  print_r($user->getData());
?>

Uitvoer van de code:

phpArray
(
  [email] => test@example.com
  [age] => 25
)

Voorbeeld

Gebruik van __set voor gegevensvalidatie voordat ze worden ingesteld:

php<?php
  class Product {
    private $price;
    
    public function __set($name, $value) {
      if ($name === 'price') {
        if (!is_numeric($value) || $value < 0) {
          throw new Exception('Ongeldige prijswaarde');
        }
        $this->price = $value;
      }
    }
    
    public function getPrice() {
      return $this->price;
    }
  }
  
  $product = new Product();
  $product->price = 100;
  echo $product->getPrice();
?>

Uitvoer van de code:

php100

Zie ook

  • magische methode __get,
    die pogingen om ontoegankelijke eigenschappen te lezen onderschept
  • magische methode __isset,
    die de controle op het bestaan van eigenschappen onderschept