Конвертация MIME-типов и расширений файлов

«devanych/mime-types» — это маленькая PHP библиотека, умеющая конвертировать MIME-типы файлов в расширения файлов и наоборот. Библиотека достачно гибкая и дает возможность создать собственную функциональность, реализовав интерфейсы:

Из коробки есть две реализации для использования:

  • «Devanych\Mime\MimeTypes» — класс, реализующий оба интерфейса, соответственно содержащий карту MIME-типов и расширений файлов, есть возможность добавлять свою карту;

  • «Devanych\Mime\MimeTypesAllowed» — класс, реализующий только Devanych\Mime\MimeTypesInterface и работающий только с переданной картой MIME-типов и расширений файлов, карта добавляется один раз при создании объекта.

Использование класса MimeTypes

Создание объекта:

use Devanych\Mime\MimeTypes;

$mimeTypes = new MimeTypes();

Конвертация:

/**
 * Возвращает MIME-типы для данного расширения файла.
 *
 * @param string $extension
 * @return string[] массив MIME-типов или пустой массив, если совпадение не найдено.
 */
$mimeTypes->getMimeTypes('jpeg'); // ['image/jpeg', 'image/pjpeg']

/**
 * Возвращает расширения файлов для данного MIME-типа.
 *
 * @param string $mimeType
 * @return string[] массив расширений или пустой массив, если совпадение не найдено.
 */
$mimeTypes->getExtensions('image/jpeg'); // ['jpeg', 'jpg', 'jpe']

Добавление карты:

/**
 * Добавляет пользовательскую карту MIME-типов и расширений файлов.
 *
 * MIME-тип является ключом, а значением является массив расширений.
 *
 * Пример:
 * 
 * $map = [
 *    'image/ico' => ['ico'],
 *    'image/icon' => ['ico'],
 *    'image/jp2' => ['jp2', 'jpg2'],
 *    'image/jpeg' => ['jpeg', 'jpg', 'jpe'],
 *    'image/jpeg2000' => ['jp2', 'jpg2'],
 * ];
 *
 * Если передан некорректный формат карты, будет брошено исключение `\InvalidArgumentException`.
 *
 * @param array $map
 */
$mimeTypes->addMap($map);

Можно передать карту при создании класса Devanych\Mime\MimeTypes, внутри конструктора будет вызван метод addMap().

Использование класса MimeTypesAllowed

Если необходимо использовать только разрешенные предустановленные MIME-типы и расширения файлов, то используйте Devanych\Mime\MimeTypesAllowed вместо Devanych\Mime\MimeTypes.

use Devanych\Mime\MimeTypesAllowed;

$map = [
    'image/gif' => ['gif'],
    'image/png' => ['png'],
    'image/jpeg' => ['jpeg', 'jpg', 'jpe'],
];

$mimeTypes = new MimeTypesAllowed($map);

При создании экземпляра класса Devanych\Mime\MimeTypesAllowed необходимо передать карту. Если вы передадите пустую карту или карту в некорректном формате, будет брошено исключение \InvalidArgumentException.

При создании экземпляра класса Devanych\Mime\MimeTypesAllowed в конструкторе вызывается метод addMap(), но по соображениям безопасности при повторной попытке вызова метода addMap() будет брошено исключение \LogicException.

Методы getMimeTypes() и getExtensions() работают так же, как и в Devanych\Mime\MimeTypes, но поиск выполняется только в предустановленных MIME-типах и расширениях файлов, которые были переданы конструктору при создании экземпляра класса Devanych\Mime\MimeTypesAllowed.

 Коментарии ( 0 )

Добавить комментарий

 Латинские или кириллические буквы, не меньше 3 и не больше 30 символов.
 E-mail никто не увидит.