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 ->
Recent Comments