Die magiese metode __set

Die magiese metode __set word outomaties uitgeroep wanneer daar gepoog word om waarde toe te ken aan 'n eienskap wat nie bestaan of nie in die huidige konteks toeganklik is nie. Die metode aanvaar twee parameters: die naam van die eienskap en die waarde wat probeer word om toe te ken.

Sintaksis

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

Voorbeeld

Kom ons skep 'n klas wat __set sal gebruik om pogings om nie-bestaande eienskappe in te stel, te onderskep:

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());
?>

Resultaat van die kode-uitvoering:

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

Voorbeeld

Gebruik van __set om data te valideer voordat dit ingestel word:

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

Resultaat van die kode-uitvoering:

php100

Sien ook

  • die magiese metode __get,
    wat pogings om ontoeganklike eienskappe te lees, onderskep
  • die magiese metode __isset,
    wat die kontrole vir die bestaan van eienskappe onderskep