Для чего используется метод set в ООП?

«Для чего используется метод set в ООП?» — вопрос из категории ООП, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Метод set (сеттер) — это публичный метод класса, предназначенный для безопасного изменения значения приватного или защищённого свойства объекта. Его основная задача — обеспечить контроль над присваиванием данных.

Основные цели использования:

  1. Валидация данных. Можно проверить корректность значения перед его установкой.
  2. Инкапсуляция. Внутреннее представление данных скрыто от внешнего кода. Если логика хранения изменится (например, свойство разбивается на два), это не затронет клиентский код.
  3. Логирование или запуск побочных действий. Например, можно записать в лог факт изменения или уведомить наблюдателей.

Пример с валидацией в 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 или мутаторы/аксессоры.