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

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

Перечисления для определения констант и типов в Kinopoisk API.


📚 Навигация: Главная → Перечисления


📋 Категории перечислений

🖼️ Медиа и контент

📝 Отзывы и факты

👥 Персоны и профессии

🎬 Фильмы и сериалы

📊 Статистика и награды

🔧 API и система

🔗 Связанные компоненты

Модели

  • Film - Использует ContentType, FilmOrder
  • Image - Использует ImageType
  • Video - Использует VideoSite
  • Review - Использует ReviewType, ReviewOrder
  • Fact - Использует FactType
  • Staff - Использует ProfessionKey
  • Person - Использует Sex
  • PersonSpouse - Использует Sex, RelationType
  • BoxOffice - Использует BoxOfficeType
  • Distribution - Использует DistributionType

Сервисы

  • FilmService - Использует все перечисления фильмов
  • PersonService - Использует ProfessionKey, Sex
  • MediaService - Использует ImageType, VideoSite
  • UserService - Использует ApiVersion, AccountType

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

Использование перечислений

PHP
<?php

require_once 'vendor/autoload.php';

use NotKinopoisk\Enums\ImageType;
use NotKinopoisk\Enums\ReviewType;
use NotKinopoisk\Enums\ProfessionKey;
use NotKinopoisk\Enums\ContentType;
use NotKinopoisk\Enums\Sex;

// Работа с типами изображений
$posterType = ImageType::POSTER;
$screenshotType = ImageType::SCREENSHOT;

echo "Тип постера: {$posterType->value}\n"; // "POSTER"
echo "Отображаемое имя: {$posterType->getDisplayName()}\n"; // "Постер"

// Проверка типов
if ($posterType->isMain()) {
    echo "Это основной тип изображения\n";
}

// Работа с типами отзывов
$positiveReview = ReviewType::POSITIVE;
$negativeReview = ReviewType::NEGATIVE;

echo "Тип отзыва: {$positiveReview->getDisplayName()}\n"; // "Положительный"

// Работа с профессиями
$director = ProfessionKey::DIRECTOR;
$actor = ProfessionKey::ACTOR;

echo "Профессия: {$director->getDisplayName()}\n"; // "Режиссер"

if ($director->isCreativeProfession()) {
    echo "Это творческая профессия\n";
}

// Работа с типами контента
$film = ContentType::FILM;
$series = ContentType::SERIES;

echo "Тип контента: {$film->getDisplayName()}\n"; // "Фильм"

if ($film->isFilm()) {
    echo "Это фильм\n";
}

// Работа с полом
$male = Sex::MALE;
$female = Sex::FEMALE;

echo "Пол: {$male->getDisplayName()}\n"; // "Мужской"

📊 Статистика перечислений

Медиа и контент (4)

  • ImageType - 8 типов изображений
  • VideoSite - 6 сайтов видео
  • ContentType - 11 типов контента
  • CollectionType - 4 типа коллекций

Отзывы и факты (3)

  • ReviewType - 3 типа отзывов
  • ReviewOrder - 4 порядка сортировки
  • FactType - 2 типа фактов

Персоны и профессии (3)

  • ProfessionKey - 15+ ключей профессий
  • Sex - 3 значения пола
  • RelationType - 4 типа связей

Фильмы и сериалы (3)

  • FilmOrder - 8 порядков сортировки
  • DistributionType - 3 типа дистрибуции
  • DistributionSubType - 6 подтипов дистрибуции

Статистика и награды (2)

  • BoxOfficeType - 3 типа кассовых сборов
  • Month - 12 месяцев

API и система (2)

  • ApiVersion - 3 версии API
  • AccountType - 2 типа аккаунтов

🔧 Общие методы

Большинство перечислений имеют общие методы:

getDisplayName()

PHP
public function getDisplayName(): string

Возвращает человекочитаемое название значения.

from()

PHP
public static function from(string|int $value): self

Создает экземпляр перечисления из значения.

values()

PHP
public static function values(): array

Возвращает все возможные значения перечисления.

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

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

PHP
use NotKinopoisk\Enums\ImageType;

// Получение всех типов изображений
$allTypes = ImageType::cases();

foreach ($allTypes as $type) {
    echo "{$type->value}: {$type->getDisplayName()}\n";
}

// Фильтрация основных типов
$mainTypes = array_filter($allTypes, fn($type) => $type->isMain());

foreach ($mainTypes as $type) {
    echo "Основной тип: {$type->getDisplayName()}\n";
}

// Создание из строки
$type = ImageType::from('POSTER');
echo "Тип: {$type->getDisplayName()}\n";

Работа с профессиями

PHP
use NotKinopoisk\Enums\ProfessionKey;

// Получение всех профессий
$allProfessions = ProfessionKey::cases();

// Группировка по категориям
$creativeProfessions = array_filter($allProfessions, fn($p) => $p->isCreativeProfession());
$technicalProfessions = array_filter($allProfessions, fn($p) => $p->isTechnicalProfession());

echo "Творческие профессии:\n";
foreach ($creativeProfessions as $profession) {
    echo "- {$profession->getDisplayName()}\n";
}

echo "Технические профессии:\n";
foreach ($technicalProfessions as $profession) {
    echo "- {$profession->getDisplayName()}\n";
}

// Проверка конкретных профессий
$director = ProfessionKey::DIRECTOR;
$actor = ProfessionKey::ACTOR;

if ($director->isCreativeProfession()) {
    echo "Режиссер - творческая профессия\n";
}

if ($actor->isCreativeProfession()) {
    echo "Актер - творческая профессия\n";
}

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

PHP
use NotKinopoisk\Enums\ContentType;

// Получение всех типов контента
$allTypes = ContentType::cases();

// Фильтрация фильмов
$films = array_filter($allTypes, fn($type) => $type->isFilm());

foreach ($films as $type) {
    echo "Фильм: {$type->getDisplayName()}\n";
}

// Фильтрация сериалов
$series = array_filter($allTypes, fn($type) => $type->isSeries());

foreach ($series as $type) {
    echo "Сериал: {$type->getDisplayName()}\n";
}

// Создание из строки
$contentType = ContentType::from('FILM');
echo "Тип контента: {$contentType->getDisplayName()}\n";

Работа с порядками сортировки

PHP
use NotKinopoisk\Enums\FilmOrder;
use NotKinopoisk\Enums\ReviewOrder;

// Получение всех порядков сортировки фильмов
$filmOrders = FilmOrder::cases();

foreach ($filmOrders as $order) {
    echo "{$order->getDisplayName()}: {$order->value}\n";
}

// Получение всех порядков сортировки отзывов
$reviewOrders = ReviewOrder::cases();

foreach ($reviewOrders as $order) {
    echo "{$order->getDisplayName()}: {$order->value}\n";

    if ($order->isDateSort()) {
        echo "  - Сортировка по дате\n";
    }

    if ($order->isPositiveRatingSort()) {
        echo "  - Сортировка по положительным оценкам\n";
    }

    if ($order->isNegativeRatingSort()) {
        echo "  - Сортировка по отрицательным оценкам\n";
    }
}

🔗 Связанные разделы