Перейти к содержанию

DataManager

getObjectsArray()

Описание: Преобразует массив объектов в массив массивов Статический вспомогательный метод для преобразования коллекции объектов в массив массивов путем вызова метода toArray() для каждого объекта. Используется для сериализации связанных объектов (например, жанров, стран, персон) при преобразовании основного объекта в массив данных. Может быть массивом объектов с методом toArray(), null, false или пустым массивом. Если передан массив, каждый элемент должен содержать метод toArray() Возвращает пустой массив, если входные данные являются falsy-значением (null, false, 0, пустой массив, пустая строка)

Параметры:

  • $objects (mixed): Коллекция объектов для преобразования или любое другое значение.

Возвращает: array<mixed> Массив массивов, полученный путем вызова toArray() для каждого объекта.

Пример:

PHP
// Преобразование массива объектов жанров
$genres = [new Genre('драма'), new Genre('триллер')];
$result = DataManager::getObjectsArray($genres);
// Результат: [['name' => 'драма'], ['name' => 'триллер']]
// Преобразование массива объектов стран
$countries = [new Country('США'), new Country('Великобритания')];
$result = DataManager::getObjectsArray($countries);
// Результат: [['name' => 'США'], ['name' => 'Великобритания']]
// Обработка пустого значения
$result = DataManager::getObjectsArray(null);
// Результат: []
// Обработка false
$result = DataManager::getObjectsArray(false);
// Результат: []

См. также:

  • Movie::toArray: () Основной метод преобразования объекта фильма в массив
  • Genre::toArray: () Метод преобразования жанра в массив
  • Country::toArray: () Метод преобразования страны в массив
  • Person::toArray: () Метод преобразования персоны в массив

parseObjectAuto()

Описание: Автоматически парсит объект из массива данных в зависимости от типа Универсальный метод для автоматической обработки объектов, который определяет, является ли значение по указанному ключу массивом объектов или одиночным объектом, и соответственно выбирает подходящий метод парсинга. Используется для автоматизации процесса обработки данных API, где одно и то же поле может содержать как массив объектов, так и одиночный объект.

Параметры:

  • $key (string): Ключ в массиве данных, по которому находится значение для парсинга
  • $cls (string): Полное имя класса для создания объектов (должен иметь метод fromArray)
  • $default (mixed): Значение по умолчанию, возвращаемое при отсутствии данных (по умолчанию null)

Возвращает: mixed Массив объектов указанного класса, одиночный объект или значение по умолчанию

Исключения:

  • \KinopoiskDev\Exceptions\KinopoiskDevException: Если указанный класс не существует или не имеет метода fromArray

См. также:

  • DataManager::parseObjectArray: () Для обработки массива объектов
  • DataManager::parseObjectData: () Для обработки одиночного объекта

parseObjectArray()

Описание: Разбирает данные объекта из массива API Статический метод для извлечения и преобразования данных объектов из массива API по указанному ключу. Если ключ существует в массиве, применяет функцию преобразования к каждому элементу: создает объект через fromArray() для массивов или возвращает элемент как есть для других типов данных. Используется для обработки коллекций связанных объектов (жанры, страны, персоны и т.д.) при десериализации данных API. Метод выполняет автоматическую проверку существования указанного класса и наличия в нем метода fromArray() перед началом обработки данных. Это обеспечивает безопасность и предотвращает ошибки выполнения при работе с некорректными классами. Класс должен содержать статический метод fromArray() Каждый элемент массива либо преобразован в объект через fromArray(), либо возвращен в исходном виде для неассоциативных данных или не содержит метод fromArray()

Параметры:

  • $key (string): Ключ для поиска в массиве данных (например, 'genres', 'countries', 'persons')
  • $cls (string): Имя класса для создания объектов (например, 'Genre', 'Country', 'Person').
  • $default (mixed): Значение по умолчанию, возвращаемое при отсутствии ключа (по умолчанию пустой массив)

Возвращает: array<mixed> Массив объектов указанного типа или значение по умолчанию, если ключ не найден.

Исключения:

  • \KinopoiskDev\Exceptions\KinopoiskDevException: Если указанный класс не существует

Пример:

PHP
// Обработка массива жанров из API
$apiData = ['genres' => [['name' => 'драма'], ['name' => 'триллер']]];
$genres = DataManager::parseObjectArray($apiData, 'genres', 'Genre');
// Результат: [Genre объект 'драма', Genre объект 'триллер']
// Обработка отсутствующего ключа с кастомным значением по умолчанию
$result = DataManager::parseObjectArray($apiData, 'missing_key', 'Country', []);
// Результат: []
// Обработка данных с null значением по умолчанию
$result = DataManager::parseObjectArray($apiData, 'actors', 'Person', null);
// Результат: null (если ключ 'actors' отсутствует)
// Обработка смешанных данных (массивы и примитивы)
$mixedData = ['items' => [['id' => 1, 'name' => 'test'], 'simple_string']];
$result = DataManager::parseObjectArray($mixedData, 'items', 'SomeClass');
// Результат: [SomeClass объект, 'simple_string']

См. также:

  • DataManager::getObjectsArray: () Для преобразования объектов в массивы
  • Genre::fromArray: () Для создания объектов жанров
  • Country::fromArray: () Для создания объектов стран
  • Person::fromArray: () Для создания объектов персон
  • LinkedMovie::fromArray: () Для создания объектов связанных фильмов

parseObjectData()

Описание: Парсит данные объекта из массива через фабричный метод Универсальный статический метод для создания объектов из массивов данных с использованием фабричного метода fromArray. Выполняет валидацию существования класса и требуемого метода, возвращая экземпляр объекта указанного класса или значение по умолчанию при отсутствии данных.

Параметры:

  • $key (string): Ключ в массиве данных для извлечения значения
  • $cls (string): Полное имя класса для создания объекта (с пространством имен)
  • $default (mixed): Значение по умолчанию, возвращаемое при отсутствии данных

Возвращает: mixed Экземпляр указанного класса, созданный через fromArray, или значение по умолчанию

Исключения:

  • \KinopoiskDev\Exceptions\KinopoiskDevException: Если указанный класс не существует
  • \KinopoiskDev\Exceptions\KinopoiskDevException: Если в классе отсутствует метод fromArray

Пример:

PHP
// Создание объекта рейтинга из массива данных
$rating = Helper::parseObjectData(
$apiData,
'rating',
Rating::class,
new Rating()
);
// Создание объекта изображения с null по умолчанию
$poster = Helper::parseObjectData(
$movieData,
'poster',
ShortImage::class
);

См. также:

  • \KinopoiskDev\Models\Rating::fromArray: () Пример использования с моделью рейтинга
  • \KinopoiskDev\Models\Image::fromArray: () Пример использования с моделью изображения
  • \KinopoiskDev\Models\ExternalId::fromArray: () Пример использования с внешними ID

parseEnumValue()

Описание: Разбирает значение enum из массива данных по указанному ключу Безопасно извлекает значение из массива данных и пытается преобразовать его в соответствующий enum с помощью метода tryFrom. Если ключ отсутствует в массиве или значение не может быть преобразовано в enum, возвращается значение по умолчанию. Выполняет проверку существования указанного класса enum перед попыткой преобразования.

Параметры:

  • $key (string): Ключ в массиве, значение которого необходимо получить
  • $enumClass (string): Полное имя класса enum для преобразования значения
  • $default (mixed): Значение по умолчанию, возвращаемое при отсутствии ключа или неудачном преобразовании

Возвращает: mixed Экземпляр enum или значение по умолчанию при неудачном преобразовании

Исключения:

  • \KinopoiskDev\Exceptions\KinopoiskDevException: Если указанный класс enum не существует

Пример:

PHP
// Разбор типа фильма из данных API
$movieType = parseEnumValue(
data: ['type' => 'movie'],
key: 'type',
enumClass: MovieType::class
);
// Разбор с значением по умолчанию
$status = parseEnumValue(
data: $apiData,
key: 'status',
enumClass: Status::class,
default: Status::UNKNOWN
);

См. также:

  • \KinopoiskDev\Enums\MovieType: Пример использования с enum типов фильмов
  • \KinopoiskDev\Enums\FilterField: Пример использования с enum полей фильтрации