Конвертация MIME-типов и расширений файлов
«devanych/mime-types» — это маленькая PHP библиотека, умеющая конвертировать MIME-типы файлов в расширения файлов и наоборот. Библиотека достачно гибкая и дает возможность создать собственную функциональность, реализовав интерфейсы:
- «Devanych\Mime\MimeTypesInterface» — интерфейс, содержащий методы для реализации функциональности;
- «Devanych\Mime\MimeTypesMapsInterface» — интерфейс, содержащий карту 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 )