Ответ
Метод set (сеттер) — это публичный метод класса, предназначенный для безопасного изменения значения приватного или защищённого свойства объекта. Его основная задача — обеспечить контроль над присваиванием данных.
Основные цели использования:
- Валидация данных. Можно проверить корректность значения перед его установкой.
- Инкапсуляция. Внутреннее представление данных скрыто от внешнего кода. Если логика хранения изменится (например, свойство разбивается на два), это не затронет клиентский код.
- Логирование или запуск побочных действий. Например, можно записать в лог факт изменения или уведомить наблюдателей.
Пример с валидацией в PHP:
class User {
private $age;
public function setAge(int $age): void {
if ($age < 0 || $age > 150) {
throw new InvalidArgumentException('Age must be between 0 and 150');
}
$this->age = $age;
}
public function getAge(): int {
return $this->age;
}
}
$user = new User();
$user->setAge(30); // Корректно
// $user->setAge(-5); // Выбросит исключение
Сеттеры часто используются в паре с геттерами (get-методами), формируя подход, известный как getters/setters или мутаторы/аксессоры.