Hej, pracowałem z funkcją PHP, która pobiera wiele argumentów i formatuje je. Obecnie pracuję z mniej więcej tak:PHP pobiera wszystkie argumenty jako tablicę?
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);
}
Ale zastanawiałem się, czy mogę użyć takiego rozwiązania:
function foo(params $args){
for ($i = 0; $i < count($args); $i++)
doSomethingWith($args[$i], $i + 1);
}
Ale nadal wywoływać funkcję w ten sam sposób, podobny do params keyword w C# lub tablica argumentów w JavaScript.
Jeden haczyka z func_get_args że warto zwrócić uwagę; nie można przekazać go do innego wywołania funkcji. – Rob
@Rob Możesz, jeśli przejdziesz '$ args = func_get_args()', a następnie 'call_user_func_array ($ func, $ args)' – alex
func_get_args() zwraca tylko wartości tych parametrów, które zostały PRZESZKANE do wywołania funkcji, nie wszystkie zdefiniowane parametry w definicji funkcji. –