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
public 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
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:
Array
(
[email] => test@example.com
[age] => 25
)
Voorbeeld
Gebruik van __set voor gegevensvalidatie voordat ze worden ingesteld:
<?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:
100