DataManager
getObjectsArray()
Описание: Преобразует массив объектов в массив массивов Статический вспомогательный метод для преобразования коллекции объектов в массив массивов путем вызова метода toArray() для каждого объекта. Используется для сериализации связанных объектов (например, жанров, стран, персон) при преобразовании основного объекта в массив данных. Может быть массивом объектов с методом toArray(), null, false или пустым массивом. Если передан массив, каждый элемент должен содержать метод toArray() Возвращает пустой массив, если входные данные являются falsy-значением (null, false, 0, пустой массив, пустая строка)
Параметры:
$objects(mixed): Коллекция объектов для преобразования или любое другое значение.
Возвращает: array<mixed> Массив массивов, полученный путем вызова toArray() для каждого объекта.
Пример:
// Преобразование массива объектов жанров
$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: Если указанный класс не существует
Пример:
// Обработка массива жанров из 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
Пример:
// Создание объекта рейтинга из массива данных
$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 не существует
Пример:
// Разбор типа фильма из данных 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 полей фильтрации