Funções definidas pelo usuário
Uma função pode ser definida usando-se a sintaxe como a seguinte:
Exemplo 12-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.
No PHP 3, as funções precisam ser definidas antes de serem referenciadas. Esse
requisito não existe no 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 12-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 12-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();
?>
|
|
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). O PHP4 suporta ambos: 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.