N'envoyer que certains arguments prédéfinis
Bonjour à tous,
Je suis en train de coder en PHP et je me rend compte que je ne sais pas s'il est possible d'envoyer que certain arguments !
Pour le thread, imaginons que je travaille sur une fonction qui gèrerait des images :
Code:
1 2 3 4 5 6 7
| <?php
function image($nom='noname', $type='png')
{
// content
echo $nom.".".$type."<br/>";
}
?> |
Le principe maintenant serait de lancer la fonction en définissant $type mais en laissant $nom par defaut..
J'ai essayer comme d'autre langage à lancer la fonction de cette manière :
Code:
1 2 3
| <?php
image($type="bmp");
?> |
Mais PHP le comprend en créant une variable $type dans ce bloc, et envoit la valeur (qui sera interprété par le premier argument)...
Un petit exemple pour comprendre :
Code:
1 2 3 4
| <?php
image($type="bmp");
echo $type;
?> |
Sortie :
Quelqu'un sait si c'est possible ??! Je me dis que PHP à intégré une autre façon pour faire ça.
Pour essayer de faire un rendu à peut près identique je pensais ne mettre qu'un seul argument [Array] avec des clés bien défini puis testé les valeurs rentrés, les autres seront rajouté avec les valeur par défaut.
Exemple :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <?php
function image($arg = array() ) // si aucun argument on prend un tableau vide
{
// valeur par defaut
$defaut = array( 'nom'=>'noname',
'type'=>'png'); // liste des valeurs par defaut
$array = array_merge($defaut, $arg);
// content
echo $array['nom'].".".$array['type']."<br/>";
}
image();
image(array('type'=>'bmp'));
image(array('nom'=>'truc'));
image(array('nom'=>'truc', 'type'=>'bmp'));
?> |
Sortie :
Citation:
noname.png
noname.bmp
truc.png
truc.bmp
Quelqu'un aurait une autre idée ? Ou une meilleur solution ?
Merci à tous !
Les paramètres par défaut doivent être placés en dernier
Bonjour CactO_o's,
Selon le manuel PHP les paramètres par défaut doivent être placés en dernier.
Dans ton cas, nous avons deux paramètres par défaut. Seul le second sera considéré par PHP comme un vrai argument par défaut. Dons, si l'on veut faire varier $type, $nom doit-être le dernier argument.
Code:
1 2 3 4 5 6 7 8 9 10
| <?php
function image($type='png', $nom='noname')
{
// content
if(empty($type)) { //pour appeler la fonction sans argument
$type="png";
}
echo $nom.".".$type."<br/>";
}
?> |
Pour tester :
Code:
1 2 3 4 5 6 7 8 9
| <?php
$type="jpg";
$nom = "monNom";
image($type, $nom);
image(); //D'où le test du empty($type)
image($type);
image($nom); //Attention n'affecte que le type donc non valide ligne 4
image("", $nom); // pour réellement passer le nom avec le type à vide
?> |
Résultat :
Citation:
monNom.jpg
noname.png
noname.jpg
noname.monNom
monNom.png
oups petit souci pour l'affichage de la citation.
Cordialement,
wmahann