SimpleResponse
Документация по simpleresponse. Часть API wrapper для КиноПоиска.
Описание
SimpleResponse - это базовый класс для простых ответов API, содержащих только массив элементов без дополнительной метаинформации. Реализует интерфейс ResponseInterface и предоставляет базовую функциональность для работы с коллекциями объектов.
Основные возможности
- Хранение массива элементов в неизменяемом виде
- Создание объекта из массива данных API с валидацией класса
- Преобразование элементов в указанный тип через статический метод
fromArray - Преобразование в массив для сериализации
- Валидация целевого класса для преобразования элементов
Наследование
NotKinopoisk\Interfaces\ResponseInterface
└── NotKinopoisk\Responses\SimpleResponseКонструктор
public function __construct(public array $items)Параметры
$items(array) - Массив элементов данных
Свойства
items
public array $itemsМассив элементов ответа. Доступен только для чтения.
Статические методы
fromArray()
public static function fromArray(array $data, string $cls): objectСоздает экземпляр SimpleResponse из массива данных API.
Параметры
$data(array) - Массив данных от API$cls(string) - Имя класса для преобразования элементов
Возвращает
object- Новый экземпляр с преобразованными данными
Исключения
KpValidationException- Если указанный класс не существует или не имеет методаfromArray
Пример использования
$apiData = [
['id' => 1, 'name' => 'Item 1'],
['id' => 2, 'name' => 'Item 2']
];
$response = SimpleResponse::fromArray($apiData, MyModel::class);checkClass()
public static function checkClass(string $cls): voidВалидирует целевой класс для преобразования элементов.
Параметры
$cls(string) - Полное имя класса
Исключения
KpValidationException- Если класс не существует или не имеет статического методаfromArray
Пример использования
SimpleResponse::checkClass(MyModel::class);Методы экземпляра
toArray()
public function toArray(): arrayПреобразует объект в массив.
Возвращает
array- Массив с преобразованными элементами
Пример использования
$response = SimpleResponse::fromArray($apiData, MyModel::class);
$array = $response->toArray();Требования к целевым классам
Для корректной работы с SimpleResponse целевые классы должны:
- Существовать - Класс должен быть доступен в системе
- Иметь статический метод
fromArray- Метод должен принимать массив и возвращать объект - Иметь метод
toArray- Для корректного преобразования в массив
Пример корректного класса
class MyModel
{
public function __construct(
public int $id,
public string $name
) {}
public static function fromArray(array $data): self
{
return new self(
id: $data['id'],
name: $data['name']
);
}
public function toArray(): array
{
return [
'id' => $this->id,
'name' => $this->name
];
}
}Обработка ошибок
Класс включает комплексную обработку ошибок:
- Проверка существования класса - Убеждается, что указанный класс существует
- Валидация метода
fromArray- Проверяет наличие и статичность метода - Обработка ошибок типизации - Безопасное преобразование данных
Пример полного использования
use NotKinopoisk\Responses\SimpleResponse;
use NotKinopoisk\Models\MyModel;
// Получение данных от API
$apiData = [
['id' => 1, 'name' => 'Первый элемент'],
['id' => 2, 'name' => 'Второй элемент'],
['id' => 3, 'name' => 'Третий элемент']
];
// Создание объекта ответа
$response = SimpleResponse::fromArray($apiData, MyModel::class);
// Доступ к элементам
$items = $response->items;
echo "Количество элементов: " . count($items) . "\n";
// Обработка элементов
foreach ($items as $item) {
echo "ID: {$item->id}, Имя: {$item->name}\n";
}
// Преобразование в массив
$array = $response->toArray();
echo "Преобразовано в массив: " . json_encode($array, JSON_UNESCAPED_UNICODE) . "\n";Наследование
SimpleResponse является базовым классом для более специализированных ответов:
MovieStaffResponse- Для работы со съемочной командойSequelPrequelResponse- Для работы с сиквелами и приквелами
Связанные классы
ResponseInterface- Интерфейс для всех ответов APIKpValidationException- Исключение для ошибок валидацииDefaultResponse- Расширенный базовый класс с метаинформациейPaginatedResponse- Класс для пагинированных ответов