Parâmetros opcionais em Funções

Tags: , — July 11, 2007 @ 5:43 pm

Este post é um complemento para o próximo post. Como minha intenção era falar sobre funções com número de parâmetros indefinidos, achei melhor postar primeiro sobre funções com parâmetros opcionais, uma vez que, na maioria dos casos, esta solução é suficiente.

Caso precise declarar uma função que receba de 0 a n parâmetros, desde que n seja um quantidade definida, podemos utilizar funções com parâmetros opcionais, estes parâmetros terão um valor padrão (sempre uma constante, nunca uma variável) que será utilizado caso não seja passado nenhum parâmetro à função. Veja o exemplo:

function sayHello ($name = ‘SamuraiDio’)
{
    echo “Hello $name”;
}
sayHello (’Paulo Diovani’) ; //imprime ‘Hello Paulo Diovani’
sayHello (); //imprime ‘Hello SamuraiDio’

Os últimos parâmetros que devem ser os opcionais, no caso de mais de um parâmetro.

/*funciona, desde que seja passado o
 *primeiro parâmetro, pelo menos
 */
function sayHello ($name1, $name2 = ‘SamuraiDio’)
{
    echo “Hello $name”;
}
/*não funciona, pois a função esperará pelo
*segundo parâmetro,
*e para este ser informado deverá ser
*também informado o primeiro
*/
function sayHello ($name1 = ‘SamuraiDio’, $name)
{
    echo “Hello $name”;
}

Este método para declarar funções é muito útil, e geralmente usado em funções de ordenação e afins:

/*ordena o array passado em $array
*em ordem crescente.
*se o segundo parâmetro for passado
*como TRUE, o array será
*ordenado em ordem decrescente.
*/
function arrayOrder (&$array, $desc = FALSE)
{
    if ($desc == FALSE)
    {
        sort($array);
    }
    else
    {
        rsort ($array);
    }
    return ($array);
}

Esse tipo de função, com parâmetros opcionais, geralmente são documentadas da seguinte forma: array arraySort ( array array [, bool desc] )

Se você gostou deste artigo, inscreva-se em meu RSS feed!

Related posts

1 Comment »

  1. […] Caso precise declarar uma função que receba ou não apenas dois ou três parâmetros, no máximo, seria preferível utilizar uma função com argumentos não obrigatórios (post anterior), pois será mais seguro, e você poderá prever melhor o resultado de seu sistema. […]

    Pingback by SamuraiDio » Funções com número variável de argumentos — July 11, 2007 @ 6:25 pm

RSS feed for comments on this post. TrackBack URI

Leave a comment