Manual do PHP
Anterior |  | Próxima

# Capítulo 17. Funções

# Funções definidas pelo usuário

Uma função pode ser definida usando-se a sintaxe como a seguinte:

Exemplo 17-1. Psuedo-código que de demonstração de uma função

`<?php function foo ($arg_1, $arg_2, /* ..., */ $arg_n) { echo "Exemplo de função.\n"; return $valor_retornado; } ?>`

Qualquer código PHP válido pode aparecer dentro de uma função, mesmo outras funções e definições de classes.

Nomes de funções seguem as mesmas regras que outros rótulo no PHP. Um nome de função válido começa com uma letra ou um sublinhado, seguido, seguido por qualquer número de letras, números ou sublinhado. Como uma expressão regular, seria expressado com: `[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*`.

> Dica: Você também pode querer dar uma ohada em Apêndice S.

No PHP 3, as funções precisam ser definidas antes de serem referenciadas. Esse requisito não existe desde PHP 4. Exceto quando uma função é definida condicionalmente como mostrada nos dois exemplos abaixo:

Quando uma função é definida condicionalmente como nos dois exemplos abaixo, sua definição precusa ser processada antes de ser chamada.

Exemplo 17-2. Funções definidas condicionalmente

`<?php
$makefoo = true;
/* Nos nao podemos chamar foo() daqui
porque ela ainda não existe,
mas nos podemos chamar bar() */
bar();
if ($makefoo) {
function foo ()
{
echo "Eu não existo até que o programa passe por aqui.\n";
}
}
/* Agora nos podemos chamar foo()
porque $makefoo foi avaliado como true */
if ($makefoo) foo();
function bar()
{
echo "Eu existo imediatamente desde o programa começar.\n";
}
?>`

Exemplo 17-3. Funções dentro de funções

`<?php function foo() { function bar() { echo "Eu não existo até foo() ser chamada.\n"; } } /* Nós não podemos chamar bar() ainda porque ela ainda não foi definida. */ foo(); /* Agora nós podemos chamar bar(), porque o processamento de foo() tornou a primeira acessivel */ bar(); ?>`

Todas as funções e classes no PHP tem escopo global - elas podem ser chamadas fora de uma função mesmo que tenham sido definidas dentro e vice versa.

O PHP não suporta sobrecarga de funções, e também não é possível cancelar ou alterar a definição de funções previamente declaradas.

> Nota: Nomes de funções são insensíveis ao caso, mas é melhor chamar as funções da mesma forma que ela aparecem nas declarações.

O PHP3 não suporta número variável de argumentos para funções, apesar de os argumentos padrões serem suportados (veja Valores padrão de argumentos para mais informações). Ambos são suportados a partir do PHP4: veja Número de argumentos variável e as referências das funções func_num_args(), func_get_arg() e func_get_args() para mais informações.

É possível chamar funções recursivas no PHP. Entretanto evite o uso de funções/métodos recursivos com mais de 100-200 níveis de recursão já que isso pode estourar a pilha e causar o encerramento do script atual.

Exemplo 17-4. Funções Recursivas

`<?php function recursion($a) { if ($a < 20) { echo "$a\n"; recursion($a + 1); } } ?>`

Anterior | Principal | Próxima
include_once() | Acima | Argumentos de funções