Forum und email

Argumentos de funções

Informações podem ser passadas para funções através da lista de argumentos, que é uma lista de expressões delimitados por vírgulas.

O PHP suporta a passagem de argumentos por valor (o padrão), passagem por referência e valores padrões de argumento. Listas de argumentos de comprimento variável são suportadas apenas no PHP4 e posterior; veja Número de argumentos variável e as referências das funções func_num_args(), func_get_arg() e func_get_args() para mais informações. Um efeito similar pode ser atingido no PHP 3 pela passagem de um array de argumentos para uma função:

Example#1 Passando arrays para funções

<?php
function takes_array($input)
{
    echo 
"$input[0] + $input[1] = "$input[0]+$input[1];
}
?>

Fazendo argumentos serem passados por referência

Por padrão, argumentos de função são passados por valor (de forma que se você mudar o valor do parâmetro dentro da função, ele não é alterado fora da função). Se você deseja permitir que uma função modifique seus argumentos, você precisa passá-los por referência.

Se você quer que um argumento para uma função sempre seja passado por referência, você pode preceder o nome do argumento com um "e comercial" (&) na definição da função:

Example#2 Passando parâmetros de função por referência

<?php
function add_some_extra(&$string)
{
    
$string .= ' e alguma coisa mais.';
}
$str 'Isto é uma string,';
add_some_extra($str);
echo 
$str;    // imprime 'Isto é uma string, e alguma coisa mais.'
?>

Valores padrão de argumentos

Uma função pode definir valores padrão no estilo C++ para argumentos escalares, como a seguir:

Example#3 Utilizando parâmetros padrão em funções

<?php
function cafeteira ($tipo "cappuccino")
{
    return 
"Fazendo uma xícara de café $tipo.\n";
}
echo 
cafeteira ();
echo 
makecoffee(null);
echo 
cafeteira ("expresso");
?>

A saída do código acima será:

Fazendo uma xícara de café cappucino.
Fazendo uma xícara de .
Fazendo uma xícara de café expresso.
     

O PHP também permite que você use matrizes e o tipo especial NULL como valor padrão, por exemplo:

Example#4 Usando tipos não escalares como valores padrões

<?php
function makecoffee($types = array("cappuccino"), $coffeeMaker NULL)
{
    
$device is_null($coffeeMaker) ? "hands" $coffeeMaker;
    return 
"Making a cup of ".join(", "$types)." with $device.\n";
}
echo 
makecoffee();
echo 
makecoffee(array("cappuccino""lavazza"), "teapot");
?>

O valor padrão precisa ser uma expressão constante, não (por exemplo) uma variável, um membro de classe ou uma chamada de função.

Note que usando argumentos padrão, qualquer padrão deve vir após os argumentos sem padrão: caso contrário, as coisas não funcionarão como esperado. Considere o seguinte trecho de código:

Example#5 Uso incorreto de parâmetros padrão de função

<?php
function iogurtera ($tipo "azeda"$sabor)
{
    return 
"Fazendo uma taça de $sabor $tipo.\n";
}

echo 
iogurtera ("framboesa");   // não funciona como esperado
?>

A saída do exemplo acima é:

Warning: Missing argument 2 in call to iogurtera() in
/usr/local/etc/httpd/htdocs/php3test/functest.html on line 41
Fazendo uma taça de framboesa.
     

Agora, compare o que está acima com este:

Example#6 Uso correto de parâmetros padrão de função

<?php
function iogurtera ($sabor$tipo "azeda")
{
    return 
"Fazendo uma taça de $sabor $tipo.\n";
}

echo 
iogurtera ("framboesa");   // funciona
?>

A saída deste exemplo é:

Fazendo uma taça de framboesa azeda.
     

Nota: A partir do PHP 5, os valores padrões são passados por referência.

Número variável de argumentos

O PHP4 e posteriores tem suporte para um número variável de argumentos nas funções definidas pelo usuário. Isto é realmente bem fácil, usando as funções func_num_args(), func_get_arg() e func_get_args().

Nenhuma sintaxe especial é requerida, e a lista de argumentos ainda pode ser fornecida explicitamente com as definições de funções e se comportarão normalmente.