API PHP Ответы SimpleResponse Описание SimpleResponse - это базовый класс для простых ответов API, содержащих только массив элементов без дополнительной метаинформации. Реализует интерфейс ResponseInterface и предоставляет базовую функциональность для работы с коллекциями объектов.
Основные возможности Хранение массива элементов в неизменяемом виде Создание объекта из массива данных API с валидацией класса Преобразование элементов в указанный тип через статический метод fromArray Преобразование в массив для сериализации Валидация целевого класса для преобразования элементов Наследование PHP NotKinopoisk\Interfaces\ResponseInterface
└── NotKinopoisk\Responses\SimpleResponse
Конструктор PHP public function __construct(public array $items)
Параметры $items (array) - Массив элементов данных Свойства items Массив элементов ответа. Доступен только для чтения.
Статические методы fromArray() PHP public static function fromArray(array $data, string $cls): object
Создает экземпляр SimpleResponse из массива данных API.
Параметры $data (array) - Массив данных от API $cls (string) - Имя класса для преобразования элементов Возвращает object - Новый экземпляр с преобразованными данными Исключения KpValidationException - Если указанный класс не существует или не имеет метода fromArray Пример использования PHP $apiData = [
['id' => 1, 'name' => 'Item 1'],
['id' => 2, 'name' => 'Item 2']
];
$response = SimpleResponse::fromArray($apiData, MyModel::class);
checkClass() PHP public static function checkClass(string $cls): void
Валидирует целевой класс для преобразования элементов.
Параметры $cls (string) - Полное имя класса Исключения KpValidationException - Если класс не существует или не имеет статического метода fromArray Пример использования PHP SimpleResponse::checkClass(MyModel::class);
Методы экземпляра toArray() PHP public function toArray(): array
Преобразует объект в массив.
Возвращает array - Массив с преобразованными элементами Пример использования PHP $response = SimpleResponse::fromArray($apiData, MyModel::class);
$array = $response->toArray();
Требования к целевым классам Для корректной работы с SimpleResponse целевые классы должны:
Существовать - Класс должен быть доступен в системе Иметь статический метод fromArray - Метод должен принимать массив и возвращать объект Иметь метод toArray - Для корректного преобразования в массив Пример корректного класса PHP 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 - Проверяет наличие и статичность метода Обработка ошибок типизации - Безопасное преобразование данных Пример полного использования PHP 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 - Интерфейс для всех ответов API KpValidationException - Исключение для ошибок валидации DefaultResponse - Расширенный базовый класс с метаинформацией PaginatedResponse - Класс для пагинированных ответов 25 июля 2025 г. 19:29:41 25 июля 2025 г. 13:46:37