|
A sintaxe básica para definir uma
função é:
function nome_da_função([arg1,
arg2, arg3]) {
Comandos;
... ;
[return <valor devolvido>];
}
Qualquer código PHP válido
pode estar contido no interior de uma função.
O tipo devolvido não deve ser declarado,
sendo necessário que o programador
esteja atento para que a função
devolva o tipo desejado. É recomendável
que esteja tudo bem documentado para facilitar
a leitura e compreensão do código.
Para efeito de documentação,
utiliza-se o seguinte formato de declaração
de função:
tipo function nome_da_funcao(tipo
arg1, tipo arg2, ...);
Este formato só deve ser utilizado
na documentação do script,
pois o PHP não aceita a declaração
de tipos. Isso significa que em muitos casos
o programador deve estar atento aos tipos
dos valores passados como parâmetros,
pois se não for passado o tipo esperado
não é emitido nenhum alerta
pelo interpretador PHP, já que este
não testa os tipos.
Valor de retorno
Toda a função pode opcionalmente
devolver um valor, ou simplesmente executar
os comandos e não devolver nenhum
valor.
Não é possível que
uma função devolva mais do
que um valor, mas é permitido fazer
com que uma função devolva
um valor composto, como listas ou arrays.
Argumentos
É possível passar argumentos
para uma função. Devem ser
declarados logo após o nome da função,
entre parênteses, e tornam-se variáveis
locais da função. A declaração
do tipo de cada argumento também
é utilizada apenas para efeito de
comentário.
Exemplo:
function imprime($texto){
echo $texto;
}
imprime("teste
de funções");
Passagem de parâmetros por referência
Normalmente, a passagem de parâmetros
em PHP é feita por valor, ou seja,
se o conteúdo da variável
for alterado, essa alteração
não afeta a variável original.
Exemplo:
function mais5($numero)
{
$numero += 5;
}
$a = 3;
mais5($a); //$a continua a valer 3
No exemplo acima, como a passagem de parâmetros
é por valor, a função
mais5 é inútil, já
que após a execução
sair da função o valor anterior
da variável é recuperado.
Se a passagem de valor fosse feita por referência,
a variável $a teria 8 como valor.
O que ocorre normalmente é que ao
ser chamada uma função, o
interpretador salva os conteúdos
das variáveis. Se uma dessas variáveis
for passada como parâmetro, o seu
conteúdo fica preservado, pois a
função irá trabalhar
na verdade com uma cópia da variável.
Porém, se a passagem de parâmetros
for feita por referência, toda alteração
que a função realizar no valor
passado como parâmetro afetará
a variável que o contém.
Há duas maneiras de fazer com que
uma função tenha parâmetros
passados por referência:indicando
isso na declaração da função,
o que faz com que a passagem de parâmetros
seja sempre assim;e também na própria
chamada da função. Nos dois
casos utiliza-se o modificador "&".
Vejamos um exemplo que ilustra os dois casos:
function mais5(&$num1,
$num2) {
$num1 += 5;
$num2 += 5;
}
$a = $b = 1;
mais5($a, $b);
Neste caso, só $num1 terá
seu valor alterado, pois a passagem por
referência está definida na
declaração da função.
mais5($a, &$b);
Aqui as duas variáveis terão
seus valores alterados.
Argumentos com valores pré-definidos
(default)
Em PHP é possível ter valores
default para argumentos de funções,
ou seja, valores que serão assumidos
no caso de nada ser passado no lugar do
argumento. Quando algum parâmetro
é declarado desta maneira, a passagem
do mesmo na chamada da função
torna-se opcional.
function teste($vivas
= "testando") {
echo $vivas;
}
teste(); // imprime
"testando"
teste("outro teste"); // imprime
"outro teste"
Quando a função tem mais
do que um parâmetro, o que tem valor
default deve ser declarado em último:
function teste($figura
= circulo, $cor) {
echo "a figura é um ",
$figura, " de cor " $cor;
}
teste(azul);
A função não vai
funcionar da maneira esperada, ocorrendo
um erro no interpretador. A declaração
correcta é:
function teste2($cor,
$figura = circulo) {
echo "a figura é um ",
$figura, " de cor " $cor;
}
teste2(azul);
Aqui a funcao funciona da maneira esperada,
ou seja, imprime o texto: "a figura
é um círculo de cor azul"
|