Post by Sylvain SFle but est bien (ici) d'avoir un seul(!) paramètre variant (passé par
référence).
Qu'est-ce que tu appelles « variant » ?
Post by Sylvain SFle proto n'est pas variadique, si tu lis bien les *accolades* et non
les parenthèses, tu liras que le corps de la fonction est ici sans
objet (ou presque), peut être que l'écriture suivante permettra de
J'avais bien compris que tes ... ne devaient pas être confondus avec
la liste de paramètres. J'essayais de faire avec ce que tu appelle « une
fonction à param. variant ». Les paramètres sont variables par défaut,
j'essayais juste de comprendre si tu voulais des fonctions avec des
paramètres avec une valeur par défaut ou des fonctions totalement
variadiques.
Dans le cas des paramètres à valeurs par défaut, le nombre de
paramètres est **toujours** le même, que tu les indiques à l'utilisation
ou non. Dans l'autre cas, le seul moyen est d'utiliser func_get_args.
Post by Sylvain SFfunction foo(&$a = null)
{
// il y a surement un corps de fonction
// mais ce n'est pas l'objet de la question
}
Post by Mickael WolffTout d'abord, faire une référence à null en PHP5 est interdit.
je ne sais pas ce que voudrais dire "faire une référence" !
<http://fr2.php.net/manual/en/language.references.php>
Post by Sylvain SF"transmettre une référence nulle" ou mieux inexistante devrait
être interdit / impossible, je m'attendais à cela, ce n'est pas le cas.
Ça l'est. Tu es tombé sur un bogue.
Post by Sylvain SFnullement, as-tu essayé ?
Oui. Mais pas en donnant le scalaire en valeur par défaut.
Post by Sylvain SFet pas la moindre fatal error.
or en effet, la référence à un "$a" quand rien n'est transmis ne devrait
pas exister.
Vivi, c'est aussi un bogue pour moi. Car si tu écris foo(null), il
couine. Toi aussi tu as le droit de contribuer <http://bugs.php.net/> ;)
J'ai cherché un bogue éventuellement déjà déclaré, mais je n'ai rien trouvé.
je viens de tomber sur ça
<http://stackoverflow.com/questions/280385/php-by-reference-parameters-and-default-null>
mais ça ne nous avance pas beaucoup.
Post by Sylvain SFPost by Mickael WolffQuand aux fonctions à nombre variables d'arguments
elles ne sont pas le sujet.
Ben si, le seul moyen de savoir si on a passé un argument est de
demander commbien d'arguments ont été passés à la fonction. Et pour
connaître ce nombre, il faut utiliser func_num_args.
Post by Sylvain SFalors on mets quoi ?
Rien. Tu peux passer des paramètres surnuméraires sans que
l'interpréteur couine, et de les exploiter avec func_get_args.
Post by Sylvain SF/* code C++ */
void foo(int* i = NULL)
{
if (i)
*i++;
}
Les pointeurs n'existent pas en PHP, et les références n'en sont pas
l'équivalent. Les références en PHP5 se comportent comme les références
de Java. Mais pas comme celles de C++, ce serait plutôt équivalent à un
std::auto_ptr.
Post by Sylvain SFPost by Mickael WolffC'est parce que tu ne regardais pas au bon endroit ;)
<http://fr.php.net/manual/en/book.funchand.php>
cela n'a rien à voir.
Ben si, complètement.
--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Seeking for a position <http://lupusmic.org/pro/>