Version complète: sur le forum Webmaster Hub : Souci fonction perso pour récupérer mime-type
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
dexmon
Bonjour,
j'essai de créer une fonction pour récupérer le mime-type de n'importe quel fichier avec 2 arguments, le fichier et le chemin vers le fichier de la base fileinfo (/usr/share/misc/magic) sur bsd, il marche parfaitement.

Mais je me heurte au problème de vouloir inclure le chemin par défaut si le 2ème argument est omis:

Voici le code:
CODE
<?php
/* Retourne le mime-type de n'importe quel fichier */
function get_mime_type($filename, $fichier_magic)
{
     if(!$fichier_magic)
     {
         $fichier_magic = '/usr/share/misc/magic';
     }
    
     $finfo = finfo_open(FILEINFO_MIME, $fichier_magic); // Retourne le type mime

     if(file_exists($filename))
     {
         if ($finfo)
         {
             /* Récupère le mime-type d'un fichier spécifique */
             $infos = finfo_file($finfo, $filename);
         }
         else
         {
             return FALSE;
         }
     }
     else
     {
         return FALSE;
     }
    
     /* Fermeture de la connexion */
     finfo_close($finfo);
     return $infos;
}

echo get_mime_type('BigMisterC.ttf');
?>


Donc ici je n'inclus pas le 2ème arguement et me retourne une erreur comme quoi le 2ème argument n'est pas indiqué, donc comment faire pour qu'il me retourne le mime-type avec le second argument par défaut si rien n'est indiqué.

Donc dans cet echo j'ai omis exprès le second argument pour tester et voici:

CODE
Warning: Missing argument 2 for get_mime_type(), called in /usr/local/www/data/host/domaine.com/test/essai.php on line 60 and defined in /usr/local/www/data/host/domaine.com/test/essai.php on line 3
application/octet-stream


Je pourrais placer un arobase devant la fonction mais c pas très propre en production.

Le but de la manoeuvre est d'utiliser cette fonction sur un système comme Windows dont le chemin de la base magic.mime n'est pas identique à bsd.

D'avance merci à tous.
Dan
Je définirais la fonction comme ceci :
CODE
function get_mime_type($filename, $fichier_magic="/usr/share/misc/magic")


ce qui te permettrait de virer les lignes suivantes, vu que la valeur par défaut de fichier_magic serait justement /usr/share/misc/magin.
CODE
     if(!$fichier_magic)
     {
         $fichier_magic = '/usr/share/misc/magic';
     }


CITATION
Extrait du manuel de php:
Use of default parameters in functions

<?php
function makecoffee($type = "cappuccino")
{
return "Making a cup of $type.\n";
}
echo makecoffee();
echo makecoffee(null);
echo makecoffee("espresso");
?>

The output from the above snippet is:


Making a cup of cappuccino.
Making a cup of .
Making a cup of espresso.
dexmon
Merci ça marche smile.gif
CODE
<?php
/* Retourne le mime-type de n'importe quel fichier */
function get_mime_type($filename, $file_magic = null)
{
     if(is_null($file_magic))
     {
         $file_magic = '/usr/share/misc/magic';
     }
    
     $finfo = finfo_open(FILEINFO_MIME, $file_magic); // Retourne le type mime

     if(file_exists($filename))
     {
         if ($finfo)
         {
             /* Récupère le mime-type d'un fichier spécifique */
             $infos = finfo_file($finfo, $filename);
         }
         else
         {
             return FALSE;
         }
     }
     else
     {
         return FALSE;
     }
    
     /* Fermeture de la connexion */
     finfo_close($finfo);
     return $infos;
}

echo get_mime_type('BigMisterC.ttf');
?>
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.