models/ClassMapOptions.md
Модель ClassMapOptions
Пространство имён: goodboyalex\php_components_pack\models
Версия: 1.0
Доступно с: 1.2.3
Описание
Класс представляет собой модель параметров сопоставления классов, которая определяет правила фильтрации свойств при маппинге. Реализует интерфейс сериализации.
Свойства класса
ignored(приватное): массив игнорируемых свойствallowed(приватное): массив разрешённых свойств
Конструктор
public function __construct(array $allowed = [], array $ignored = [])
Параметры:
$allowed— массив разрешённых свойств (по умолчанию пустой)$ignored— массив игнорируемых свойств (по умолчанию пустой)
Методы фильтрации
isAllowed()
public function isAllowed(string $propertyName): bool
Параметры:
$propertyName— имя проверяемого свойства
Возвращаемое значение: true, если свойство разрешено, иначе false
isIgnored()
public function isIgnored(string $propertyName): bool
Параметры:
$propertyName— имя проверяемого свойства
Возвращаемое значение: true, если свойство запрещено, иначе false
Особенности работы
- Игнорируемые свойства имеют приоритет над разрешёнными
- Если список игнорируемых свойств не пуст, происходит фильтрация разрешённых свойств
- При пустом списке разрешённых свойств копируются все свойства
Примеры использования
Создание и проверка
// Создаём с настройками
$options = new ClassMapOptions(
allowed: ['id', 'name', 'email'],
ignored: ['password']
);
// Проверяем свойства
var_dump($options->isAllowed('id')); // true
var_dump($options->isAllowed('password')); // false
var_dump($options->isAllowed('email')); // true
Сериализация и десериализация
// Сериализация
$serialized = $options->serialize();
// {"allowed":["id","name","email"],"ignored":["password"]}
// Десериализация
$newOptions = new ClassMapOptions();
$newOptions->unSerialize($serialized);
Рекомендации по использованию
-
При настройке маппинга:
- Определите чёткие правила фильтрации
- Используйте осмысленные имена свойств
- Проверяйте корректность списков
-
При работе с данными:
- Учитывайте приоритет игнорируемых свойств
- Проверяйте доступность свойств перед их использованием
- Сохраняйте консистентность настроек