Número de parametros dinâmicos em funções (PHP)

Categoria - Desenvolvimento, PHP - Por - Alessandro Rocha No Comments »

Ao escrever uma função em PHP, muitas vezes nos deparamos com a necessidade de passar uma longa lista de parametros para ela.

Exemplo

function minhaFuncao( $param1,$param2,$param3,$param4,
                      $param5,$param6,$param7,$param8 )
{
	if( $param1 != "" )
	{
		print $param1;
	}
	elseif ( $param1 != "" && $param2 != "" )
	{
		print $param1.$param2;
	}
	elseif ( $param1 != "" && $param2 != "" && $param3 != "" )
	{
	print $param1.$param2.$param3;
	}
	//...
	// E assim sucessivamente, seguinda essa logica
}
 
minhaFuncao( "qosmiotech ","tecnologia ","e ","cotidiano ",
"artigos ","e ","dicas ","de informatica" );
 
// Ira imprimir "qosmiotech tecnologia e
//cotidiano artigos e dicas de informatica"
? >

Isso além de ficar esteticamente “feio”, pode confundir o programador na passagem dos parametros.
Além disso,caso e eu precise passar apenas o 8º parametro ( “de informatica” )
para exibir na tela, então preciso passar os 7 parametros anteriores com valor nulo.

minhaFuncao( "","","","","","","",$param8 );
 
// Ira imprimi "de informatica";

Para isso, o PHP fornece algumas funções nativas para otimizar isso,
como func_num_args(),func_ get_ arg() e func_ get_ args().

func_num_args() retorna a quantidade de parametros de determinada função.Necessariamente
ela precisa estar sendo chamada dentro de uma função definida pelo usuário.

Exemplo

function minhaFuncao()
{
	if( func_num_args() == 0 )
	die( "Necessario pelo menos 1 parametro" );
	else
	print "Existem ".func_num_args()." parametros";
}
 
minhaFuncao();
// Irá imprimir "Necessario pelo menos 1 parametro"
 
minhaFuncao( 1,2,3,4,5,6,7,8,9,10 );
// Irá imprimir "Existem 10 parametros"

Para recuperar um valor passado para a função, então uso func_get_arg(), passando como parametro o número do argumento que quero recuperar.

function minhaFuncao()
{
	if( func_num_args() == 0 )
		die( "Necessario pelo menos 1 parametro" );
	else
		print "Existem ".func_num_args()." parametros";
 
	if ($numargs >= 2)
	{
		print "O segundo argumento é: " . func_get_arg (1);
	}
}
 
minhaFuncao( 1,2,3,4,5,6,7,8,9,10 );

// Irá imprimir “Existem 10 parametros - O segundo argumento é 2″

Para recuperar uma lista com todos os argumentos (valores), passados para a função,devo usar func_get_args()

function minhaFuncao()
{
	if( func_num_args() == 0 )
		die( "Necessario pelo menos 1 parametro" );
	else
		print "Existem ".func_num_args()." parametros";
 
	foreach( func_get_args() as $key=>$val )
	{
		print "O argumento numero " .$key. " é " . $val ;
	}
}
minhaFuncao( 1,2,3,4,5,6,7,8,9,10 );

Irá imprimir
/*
Existem 10 parametros
O argumento numero 0 é 1
O argumento numero 1 é 2
O argumento numero 2 é 3
O argumento numero 3 é 4
O argumento numero 4 é 5
O argumento numero 5 é 6
O argumento numero 6 é 7
O argumento numero 7 é 8
O argumento numero 8 é 9
O argumento numero 9 é 10
*/

Esta é uma alternativa interessante para deixar o código fonte mais limpo e legível,
ficando a critério do desenvolvedor da aplicação a melhoria e incremento dessa metodologia.

[ ] ‘ sss

Adicione ->del.icio.us | Reddit | Slashdot | Digg | Facebook | Technorati | Google | StumbleUpon | Windows Live | Tailrank | Furl | Netscape | Yahoo | BlinkList
WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS Log in