Система перечислений KinopoiskDev предоставляет типизированные константы для всех возможных значений, используемых в API. Все enum'ы основаны на PHP 8.1+ перечислениях для обеспечения типобезопасности и читаемости кода.
enum FilterField: string { case ID = 'id'; case NAME = 'name'; case YEAR = 'year'; case RATING_KP = 'rating.kp'; case GENRES = 'genres.name'; case COUNTRIES = 'countries.name'; // ... и многие другие}
enum FilterOperator: string { case EQUALS = 'eq'; case NOT_EQUALS = 'ne'; case GREATER_THAN = 'gt'; case LESS_THAN = 'lt'; case IN = 'in'; case NOT_IN = 'nin'; case RANGE = 'range'; // ... и другие}
enum SortField: string { case ID = 'id'; case NAME = 'name'; case YEAR = 'year'; case RATING_KP = 'rating.kp'; case VOTES_KP = 'votes.kp'; case CREATED_AT = 'createdAt'; // ... и другие}
enum MovieType: string { case MOVIE = 'movie'; case TV_SERIES = 'tv-series'; case CARTOON = 'cartoon'; case ANIME = 'anime'; case ANIMATED_SERIES = 'animated-series'; case TV_SHOW = 'tv-show';}
enum MovieStatus: string { case FILMING = 'filming'; case PRE_PRODUCTION = 'pre-production'; case COMPLETED = 'completed'; case ANNOUNCED = 'announced'; case POST_PRODUCTION = 'post-production';}
enum PersonProfession: string { case ACTOR = 'actor'; case DIRECTOR = 'director'; case WRITER = 'writer'; case PRODUCER = 'producer'; case COMPOSER = 'composer'; // ... и другие}
enum ImageType: string { case BACKDROP = 'backdrops'; case COVER = 'cover'; case FRAME = 'frame'; case PROMO = 'promo'; case SCREENSHOT = 'screenshot'; case SHOOTING = 'shooting'; case STILL = 'still'; case WALLPAPER = 'wallpaper';}
enum ListCategory: string { case ONLINE = 'Онлайн-кинотеатр'; case AWARD = 'Премии'; case FEE = 'Сборы'; case SERIES = 'Сериалы'; case MOVIE = 'Фильмы';}
enum StudioType: string { case PRODUCTION = 'Производство'; case SPECIAL_EFFECTS = 'Спецэффекты'; case DISTRIBUTION = 'Прокат'; case DUBBING_STUDIO = 'Студия дубляжа';}
<?phpuseKinopoiskDev\Enums\FilterField;useKinopoiskDev\Enums\FilterOperator;useKinopoiskDev\Enums\SortDirection;useKinopoiskDev\Enums\MovieType;// Использование в фильтрах$filter=newMovieSearchFilter();$filter->addFilter(FilterField::YEAR,FilterOperator::EQUALS,2023);$filter->addFilter(FilterField::TYPE,FilterOperator::EQUALS,MovieType::MOVIE);// Использование в сортировке$filter->sortBy(FilterField::RATING_KP,SortDirection::DESC);
use KinopoiskDev\Enums\PersonProfession;$filter = new PersonSearchFilter();$filter->withProfession(PersonProfession::ACTOR);// Получение русского названияecho PersonProfession::ACTOR->getRussianName(); // "Актер"echo PersonProfession::ACTOR->getRussianPluralName(); // "Актеры"
// IDE поддержка и автодополнение$filter->withStatus(MovieStatus::COMPLETED);$filter->withRatingMpaa(RatingMpaa::PG13);$filter->withImageType(ImageType::POSTER);
// Понятные названия вместо магических чисел$filter->withType(MovieType::TV_SERIES);$filter->withStatus(MovieStatus::FILMING);$filter->withProfession(PersonProfession::DIRECTOR);
// Автоматическая проверка допустимых значенийenum MovieType: string { case MOVIE = 'movie'; case TV_SERIES = 'tv-series'; // Только эти значения допустимы}