Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Valeur par defaut d'un parametre vari ant

12 réponses
Avatar
Sylvain SF
Soit une fonction à param. variant que l'on souhaite
pouvoir appeler sans transmettre de paramètre:

function foo(&$a = null){ ... }

a) est-ce que /null/ est une "bonne valeur par défaut" ?
(j'ai l'impression que cela créé localement un variable
$a initialisée à null).

b) comment savoir si un paramètre est effectivement transmis?

isset($a), ($a == null) ne semble pas permettre de décider.

nota: j'ai bien lu §17 "Making arguments be passed by reference"
et "Default argument values", mais je n'ai trouvé aucun passage
combinant les 2.

Sylvain.

2 réponses

1 2
Avatar
Pascal PONCET
Mickael Wolff a écrit :

« The problem is that you can't pass literals by reference (which makes
sense) ...



J'ai chopé ça, aussi :
http://bugs.php.net/bug.php?idc43

PP
Avatar
Sylvain SF
Mickael Wolff a écrit :

« The problem is that you can't pass literals by reference (which makes
sense):

function f(&$a) {}
f(45); // error

But default values must be literals (which also makes sense):

function f($a = $_POST) {} // error



c'est l'exposé du "problème": j'ai envie de dire que l'on ne
traite pas ici d'une "default value" (valeur stockée par cette
variable) mais bien de l'existence de cette référence.

par exemple, j'apprécierais de pouvoir écrire:

function f(&$a = new myClass()){
}

ce qui donne bien sur une erreur car seul un literal (une
valeur immédiate) est attendu ici.

So there's some serious impedance mismatch going on there to make both
features to work together. »



indeed.

merci pour ton suivi et report.

Sylvain.
1 2