Мне просто интересно узнать, почему mime_content_type () теперь считается устаревшим.
Этот метод определения типа mime намного проще, чем замена функции Fileinfo .
Я думаю, это потому, что Fileinfo может возвращать больше информации о файлах .
EDIT: Вот замена:
function _mime_content_type($filename) { $result = new finfo(); if (is_resource($result) === true) { return $result->file($filename, FILEINFO_MIME_TYPE); } return false; }
Метод не устарел!
Он однажды был неправильно помечен как устаревший в руководстве, но он был исправлен https://bugs.php.net/bug.php?id=71367 14 января 2016 года. Однако на данный момент он по-прежнему неверен отмеченные в немецком, испанском и китайском руководствах.
Не стесняйтесь использовать mime_content_type()
когда захотите :).
Другой способ – перейти к константе конструктора FILEINFO_MIME
.
$finfo = new finfo(FILEINFO_MIME); $type = $finfo->file('path/filename');
Используя finfo_file
и finfo_open
и FILEINFO_MIME_TYPE
:
finfo_file( finfo_open( FILEINFO_MIME_TYPE ), $filename );
Вот небольшая оболочка для покрытия различных сред PHP, полученных из CSSMin.php в MediaWiki 1.20.0 :
function getMimeType( $filename ) { $realpath = realpath( $filename ); if ( $realpath && function_exists( 'finfo_file' ) && function_exists( 'finfo_open' ) && defined( 'FILEINFO_MIME_TYPE' ) ) { // Use the Fileinfo PECL extension (PHP 5.3+) return finfo_file( finfo_open( FILEINFO_MIME_TYPE ), $realpath ); } if ( function_exists( 'mime_content_type' ) ) { // Deprecated in PHP 5.3 return mime_content_type( $realpath ); } return false; }
EDIT: Спасибо @Adam и @ficuscr за разъяснение, что эта функция, по сути, не устарела .
Начиная с MediaWiki 1.30, вышеуказанный код был существенно изменен (назад) на:
function getMimeType( $filename ) { return mime_content_type( $filename ); }