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

NotKinopoisk PHP Library - Документация

Полная документация PHP библиотеки для работы с Kinopoisk Unofficial API.

📚 Содержание

🚀 Быстрый старт

📦 Основные компоненты

🔧 Сервисы

📊 Модели данных

  • Film - Модель фильма
  • Person - Модель персоны
  • Staff - Модель съемочной группы
  • Review - Модель отзыва
  • Image - Модель изображения
  • Video - Модель видео
  • Fact - Модель факта
  • Award - Модель награды
  • BoxOffice - Модель кассовых сборов
  • Country - Модель страны
  • Genre - Модель жанра
  • Episode - Модель эпизода
  • Season - Модель сезона
  • ExternalSource - Модель внешнего источника
  • Distribution - Модель дистрибуции
  • FilmSearchResult - Модель результата поиска
  • PersonSpouse - Модель супруга
  • PersonFilm - Модель фильма персоны
  • UserVote - Модель голоса пользователя
  • FilmCollection - Модель коллекции фильмов
  • Filters - Модель фильтров
  • RelatedFilm - Модель связанного фильма
  • ApiKeyInfo - Модель информации об API ключе
  • ApiKeyQouta - Модель квоты API ключа
  • MediaPost - Модель медиа поста

🔢 Перечисления (Enums)

📤 Ответы API

⚠️ Исключения

🔗 Интерфейсы

🚀 Быстрый старт

Установка

Bash
composer require devcraftclub/kinopoiskapiunofficialtech

Базовое использование

PHP
<?php

require_once 'vendor/autoload.php';

use NotKinopoisk\Client;

// Создание клиента
$client = new Client('your-api-key');

// Получение фильма по ID
$film = $client->films->getById(301);

echo "Фильм: {$film->getDisplayName()}\n";
echo "Рейтинг: {$film->rating}\n";
echo "Год: {$film->year}\n";

📖 Подробные примеры

Работа с фильмами

PHP
// Поиск фильмов
$searchResults = $client->films->searchByKeyword('матрица');

// Получение топ фильмов
$topFilms = $client->films->getTop();

// Получение информации о фильме
$film = $client->films->getById(301);
$staff = $client->films->getStaff(301);
$facts = $client->films->getFacts(301);

Работа с персонами

PHP
1
2
3
4
5
6
// Поиск персон
$persons = $client->persons->searchByName('Том Круз');

// Получение информации о персоне
$person = $client->persons->getById(123);
$films = $client->persons->getFilms(123);

Работа с медиа

PHP
1
2
3
4
5
// Получение изображений
$images = $client->media->getImages(301, ImageType::POSTER);

// Получение видео
$videos = $client->media->getVideos(301);

🔧 Конфигурация

Настройка клиента

PHP
1
2
3
4
5
$client = new Client('your-api-key', [
    'timeout' => 30,
    'retry_attempts' => 3,
    'api_version' => ApiVersion::V2_1
]);

Обработка ошибок

PHP
1
2
3
4
5
6
7
8
9
try {
    $film = $client->films->getById(999999);
} catch (ResourceNotFoundException $e) {
    echo "Фильм не найден: {$e->getMessage()}\n";
} catch (RateLimitException $e) {
    echo "Превышен лимит запросов\n";
} catch (ApiException $e) {
    echo "Ошибка API: {$e->getMessage()}\n";
}

📊 Структура проекта

Text Only
src/
├── Client.php              # Основной клиент
├── Services/               # Сервисы для работы с API
│   ├── FilmService.php
│   ├── PersonService.php
│   ├── MediaService.php
│   └── UserService.php
├── Models/                 # Модели данных
│   ├── Film.php
│   ├── Person.php
│   ├── Staff.php
│   └── ...
├── Enums/                  # Перечисления
│   ├── ImageType.php
│   ├── ReviewOrder.php
│   └── ...
├── Responses/              # Классы ответов
│   ├── DefaultResponse.php
│   ├── PaginatedResponse.php
│   └── ...
├── Exceptions/             # Исключения
│   ├── ApiException.php
│   ├── InvalidApiKeyException.php
│   └── ...
└── Interfaces/             # Интерфейсы
    ├── ModelInterface.php
    └── ResponseInterface.php

🧪 Тестирование

Запуск тестов

Bash
1
2
3
4
5
6
7
8
# Все тесты
XDEBUG_MODE=coverage KINOPOISK_API_KEY=your-key composer test

# Только unit тесты
composer test -- --testsuite=Unit

# Только интеграционные тесты
composer test -- --testsuite=Integration

Проверка качества кода

Bash
1
2
3
4
5
# PHPStan анализ
XDEBUG_MODE=coverage KINOPOISK_API_KEY=your-key composer phpstan

# PHP CodeSniffer
composer phpcs

📝 Примеры использования

Смотрите папку examples/ ⧉ для готовых примеров:

🔗 Полезные ссылки