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

Рекомендации по использованию

  1. При настройке маппинга:

    • Определите чёткие правила фильтрации
    • Используйте осмысленные имена свойств
    • Проверяйте корректность списков
  2. При работе с данными:

    • Учитывайте приоритет игнорируемых свойств
    • Проверяйте доступность свойств перед их использованием
    • Сохраняйте консистентность настроек

На главную | Содержание