O PHP permite não só definir uma função com parâmetros de número limitado, e obrigatório, como por outro lado permite o uso de
funções com número de parâmetros variável.
Vejamos a seguinte função:
function Dados($nome,$email,$telefone)
{
/* Operações da função, tratamento de dados */
}
Numa função deste tipo, usada no dia a dia, tomamos a fonte como uma função de 3 parâmetros, esta ideia é errada, a função deve ser lida como, uma função de 3 parâmetros obrigatórios.
Senão vejamos o seguinte uso da função:
Dados("Nome","Email@Email.com","Telefone");
ou
Dados("Nome","Email@Email.com","Telefone","Avenida dos calhaus","Lisboa","Portugal");
Ambos os usos da função estão correctos, no entanto para os mais distraídos isto levanta um problema, como usar os parâmetros adicionais, que não foram definidos como parâmetros da função?
O PHP tem na sua lista de funções três funções muito uteis para o efeito:
int func_num_args ( void ) » devolve o número de parâmetros passados na invocação da função
array func_get_args ( void ) » devolve um array com os elementos passados na invocação da função
mixed func_get_arg ( int arg_num ) » devolve o parâmetro da posição arg_num
Vejamos então uma possível definição da nossa função exemplo:
function Dados($nome,$email,$telefone)
{
echo "Nome: ".$nome;
echo "Email: ".$email;
echo "Telefone: ".$telefone;
if(func_num_args()>3)
for($i=0;$i
[
Error: Irreparable invalid markup ('<func_num_args [...] }</code>') in entry. Owner must fix manually. Raw contents below.]
O PHP permite não só definir uma função com parâmetros de número limitado, e obrigatório, como por outro lado permite o uso de<strong> funções com número de parâmetros variável</strong>.
Vejamos a seguinte função:
<code>function Dados($nome,$email,$telefone)
{
/* Operações da função, tratamento de dados */
}</code>
Numa função deste tipo, usada no dia a dia, tomamos a fonte como uma função de 3 parâmetros, esta ideia é errada, a função deve ser lida como, uma função de 3 parâmetros obrigatórios.
Senão vejamos o seguinte uso da função:
Dados("Nome","Email@Email.com","Telefone");
ou
Dados("Nome","Email@Email.com","Telefone","Avenida dos calhaus","Lisboa","Portugal");
Ambos os usos da função estão correctos, no entanto para os mais distraídos isto levanta um problema, como usar os parâmetros adicionais, que não foram definidos como parâmetros da função?
O PHP tem na sua lista de funções três funções muito uteis para o efeito:
int func_num_args ( void ) » devolve o número de parâmetros passados na invocação da função
array func_get_args ( void ) » devolve um array com os elementos passados na invocação da função
mixed func_get_arg ( int arg_num ) » devolve o parâmetro da posição arg_num
Vejamos então uma possível definição da nossa função exemplo:
<code>function Dados($nome,$email,$telefone)
{
echo "Nome: ".$nome;
echo "Email: ".$email;
echo "Telefone: ".$telefone;
if(func_num_args()>3)
for($i=0;$i<func_num_args (),$i++)
echo "Elemento[".$i."]: ".func_get_arg($i);
}</code>
Este foi um exemplo muito simples, no entanto este tipo de funções de número variável de parametros pode ter extrema utilidade.</func_num_args></code>