АКЦИЯ: бесплатные месячные курсы по созданию сайтов
на выбор: верстка, JavaScript, PHP, Python или фреймворки. Сегодня последний день для записи! Жми!
349 of 410 menu
Бесплатный курс по выкладке сайтов на хостинг. Разбираем все нюансы! Начало 14 октября. Жми для записи!

Магический метод __set

Магический метод __set автоматически вызывается при попытке присвоить значение свойству, которое не существует или недоступно в текущем контексте. Метод принимает два параметра: имя свойства и значение, которое пытаются присвоить.

Синтаксис

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

Пример

Создадим класс, который будет использовать __set для перехвата попыток установки несуществующих свойств:

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

Результат выполнения кода:

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

Пример

Использование __set для валидации данных перед их установкой:

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

Результат выполнения кода:

100

Смотрите также

  • магический метод __get,
    который перехватывает попытки чтения недоступных свойств
  • магический метод __isset,
    который перехватывает проверку существования свойств
byenru