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