Почему mime_content_type() устарел в PHP?

Мне просто интересно узнать, почему mime_content_type() теперь считается устаревшим.

Этот метод определения типа mime намного проще, чем замена Fileinfo.

Ответ 2

Метод не устарел!

Он был некорректно отмечен как устаревший в руководстве, но он был исправлен https://bugs.php.net/bug.php?id=71367 14 января 2016 года. Однако на данный момент он по-прежнему неправильно отмечен в уставе немецкого, испанского и китайского языков.

Не стесняйтесь использовать mime_content_type(), когда захотите:).

Ответ 3

Другой способ - перейти к константе конструктора FILEINFO_MIME.

$finfo = new finfo(FILEINFO_MIME);
$type  = $finfo->file('path/filename');

Ответ 4

Используя 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 );
}

Ответ 5

Это работает:

if (!function_exists('mime_content_type')) {

    function mime_content_type($filename)
    {
        $finfo = finfo_open(FILEINFO_MIME_TYPE);
        $mimeType = finfo_file($finfo, $filename);
        finfo_close($finfo);

        return $mimeType;
    }
}