Pergunta

Ei, eu estava trabalhando com uma função PHP que leva vários argumentos e formata-los. Atualmente, estou trabalhando com algo como isto:

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);
}

Mas eu queria saber se eu posso usar uma solução como esta:

function foo(params $args){
    for ($i = 0; $i < count($args); $i++)
        doSomethingWith($args[$i], $i + 1);
}

Mas ainda invocar a função da mesma forma, semelhante aos params palavra-chave em C # ou a matriz de argumentos em JavaScript.

Foi útil?

Solução

func_get_args retorna um array com todos os argumentos da atual função.

Outras dicas

Se você usar o PHP 5.6+, agora você pode fazer isso:

<?php
function sum(...$numbers) {
    $acc = 0;
    foreach ($numbers as $n) {
        $acc += $n;
    }
    return $acc;
}

echo sum(1, 2, 3, 4);
?>

Fonte: http://php.net/ / en / functions.arguments.php # functions.variable-arg-list manual de

Ou a partir de PHP 7.1 que agora são capazes de usar uma dica tipo chamado iterable

function f(iterable $args) {
    foreach ($args as $arg) {
        // awesome stuff
    }
}

Além disso, ele pode ser usado em vez de Traversable quando você iterar usando uma interface. Assim como ele pode ser usado como um gerador que produz os parâmetros.

Documentação

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top