¿Por qué es mime_content_type() obsoleto en PHP?
-
13-09-2019 - |
Pregunta
Sólo tengo curiosidad de saber por qué mime_content_type() ahora se considera obsoleto.
Este método para determinar el tipo mime es mucho más fácil que el reemplazo de la Fileinfo la funcionalidad.
Solución
supongo que es porque Fileinfo puede devolver más información sobre los archivos .
EDIT: Aquí es un truco de sustitución:
function _mime_content_type($filename) {
$result = new finfo();
if (is_resource($result) === true) {
return $result->file($filename, FILEINFO_MIME_TYPE);
}
return false;
}
Otros consejos
El método no está obsoleto!
Una vez se marcó incorrectamente como obsoleto en el manual, pero se ha fijado https: //bugs.php.net/bug.php?id=71367 en el 14 de enero el 2016.
Sin embargo, por el momento, sigue siendo incorrecto marcado en desuso en el manual alemán, español y chino.
No dude en utilizar mime_content_type()
siempre que lo desee:.)
Otra manera es pasar al constructor FILEINFO_MIME
constante.
$finfo = new finfo(FILEINFO_MIME);
$type = $finfo->file('path/filename');
El uso de finfo_file
y finfo_open
, y FILEINFO_MIME_TYPE
:
finfo_file( finfo_open( FILEINFO_MIME_TYPE ), $filename );
Aquí un pequeño contenedor para cubrir los diferentes entornos PHP, derivado de CSSMin.php en MediaWiki 1.20:
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;
}
EDITAR: Gracias @Adam y @ficuscr para aclarar que esta función era, en realidad, no se desestima.
Como de MediaWiki 1.30, el código anterior era esencialmente cambiado (de nuevo) a:
function getMimeType( $filename ) {
return mime_content_type( $filename );
}
Esto funciona:
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;
}
}