Ответ
В объектно-ориентированном программировании аксессоры (accessors) — это публичные методы класса, которые обеспечивают контролируемый доступ к его приватным или защищённым полям. Они реализуют принцип инкапсуляции, скрывая внутреннее представление данных и позволяя добавлять логику при чтении или записи.
Основные типы аксессоров:
- Геттер (Getter): Метод для безопасного получения значения свойства.
- Сеттер (Setter): Метод для безопасной установки значения свойства, часто с валидацией.
Пример на PHP:
<?php
class User
{
private string $name;
private int $age;
// Геттер для имени
public function getName(): string
{
return $this->name;
}
// Сеттер для имени с базовой валидацией
public function setName(string $name): void
{
if (empty(trim($name))) {
throw new InvalidArgumentException('Имя не может быть пустым');
}
$this->name = $name;
}
// Геттер для возраста
public function getAge(): int
{
return $this->age;
}
// Сеттер для возраста с валидацией
public function setAge(int $age): void
{
if ($age < 0 || $age > 150) {
throw new InvalidArgumentException('Некорректный возраст');
}
$this->age = $age;
}
}
// Использование
$user = new User();
$user->setName('Анна'); // Используем сеттер
$user->setAge(30);
echo $user->getName(); // Выведет: Анна (используем геттер)
Преимущества использования аксессоров:
- Инкапсуляция: Внутренняя структура класса скрыта от внешнего кода.
- Валидация: Можно проверять и преобразовывать данные перед их сохранением.
- Гибкость: Легко изменить внутреннюю логику хранения данных, не меняя публичный API класса.
- Отладка: Упрощает добавление логирования или точек останова при доступе к свойствам.