Мне просто интересно узнать, почему mime_content_type() теперь считается устаревшим.
Этот метод определения типа mime намного проще, чем замена Fileinfo.
Мне просто интересно узнать, почему mime_content_type() теперь считается устаревшим.
Этот метод определения типа mime намного проще, чем замена Fileinfo.
Я предполагаю, потому что Fileinfo может вернуть дополнительную информацию о файлах.
РЕДАКТИРОВАТЬ: Вот замена взлома:
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 );
}
Это работает:
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;
}
}