Hé, je travaillais avec une fonction PHP qui prend plusieurs arguments et les formate. Actuellement, je travaille avec quelque chose comme ceci:
function foo($a1 = null, $a2 = null, $a3 = null, $a4 = null){
if ($a1 !== null) doSomethingWith($a1, 1);
if ($a2 !== null) doSomethingWith($a2, 2);
if ($a3 !== null) doSomethingWith($a3, 3);
if ($a4 !== null) doSomethingWith($a4, 4);
}
Mais je me demandais si je pouvais utiliser une solution comme celle-ci:
function foo(params $args){
for ($i = 0; $i < count($args); $i++)
doSomethingWith($args[$i], $i + 1);
}
Mais appelez toujours la fonction de la même manière, similaire au mot-clé params en C # ou au tableau d'arguments en JavaScript.
func_get_args
renvoie un tableau avec tous les arguments de la fonction actuelle.
Si vous utilisez PHP 5.6+, vous pouvez maintenant le faire:
<?php
function sum(...$numbers) {
$acc = 0;
foreach ($numbers as $n) {
$acc += $n;
}
return $acc;
}
echo sum(1, 2, 3, 4);
?>
source: http://php.net/manual/en/functions.arguments.php#functions.variable-arg-list
Ou à partir de PHP 7.1 vous pouvez maintenant utiliser un indice de type appelé iterable
function f(iterable $args) {
foreach ($args as $arg) {
// awesome stuff
}
}
En outre, il peut être utilisé à la place de Traversable
lorsque vous itérez à l'aide d'une interface. De plus, il peut être utilisé comme un générateur qui fournit les paramètres.