Após os 5 primeiros artigos sobre o Guia do PHP, chegamos ao sexto e vou falar sobre funções ou método como também é chamado. Ao aprender função você verá o verdadeiro poder de re-uso de códigos.Imagine você precisar chamar 10 vezes o mesmo código, e se tiver que escrever 10x a mesma coisa? Com as funções você pode criar este código apenas 1x e chamar este método as 10x necessárias. O que facilita e bastante, além de ser fácil de dar manutenção, pois imagine encontrar um erro no meio do código e você tiver que replicar esta recuperação nos 10 trechos de código? Assim precisará fazer apenas 1x. 

Organização de código: 

Aprenderemos mais adiante o que são classes. Classes são uma organização de funções. Em uma classe poderá ter várias funções dentro, estas funções podem também chamar elas próprias dentro da classe. 

A organização pode ser em arquivos também, você pode colocar em um arquivo todas as funções criadas e chamar elas quando precisar. Verá no tópico de include como que funciona este sistema de adicionar arquivos externos ao código atual e poder usar o que está lá dentro.

O que são funções em PHP? 

Função em PHP é um trecho de código que pode ser chamado (invocado) de qualquer parte do código para executar uma tarefa qualquer e retornar algum valor. Ou seja, você pode chamar quantas vezes forem necessárias a função. Você pode passar zero ou mais parâmetros para uma função, e poderá retornar apenas um valor. Porém este valor pode ser um array de valores. Mas continua sendo um valor apenas.  

A função quando chamada, ela faz com que o código PHP que a chama, seja parado. Ou seja, o código para, e espera o retorno da função para dar prosseguimento novamente ao seu invocador. 

Veja na imagem abaixo um esboço de funcionamento da função:

Ou seja, você tem seu código, nele pode conter uma ou mais funções, e quando seu código chamar uma função, ele vai aguardar ela retornar um valor. Ao retornar este valor, ou terminar todos os processos desta função, seu código vai prosseguir o funcionamento dele. 

Vamos exemplificar uma função em PHP: 

function minhaFuncao($texto)
{
    echo "O texto passado para funcao foi:" . $texto;
    //podemos ainda trabalhar mais com a variável

    return true;
}

minhaFuncao("teste de texto");
#resultado da funcao será verdadeiro e vai escrever na tela
#O texto passado para funcao foi: teste de texto
?>

A sintaxe da função é: Inicia com a palavra function, seguida de espaço, depois o nome da função (pode se usar maiúsculas, minúsculas, underline), depois abertura de parênteses, se tiver parâmetro a função, defini-se o nome da variável que vai ser passada por parâmetro e fechamento de parênteses. Depois o código da função deve estar entre chaves. 

Função com mais de um parâmetro? 

A função pode ter mais de um parâmetro, assim separamos eles com uma vírgula, conforme exemplo abaixo:

function minhaFuncao2($parametro1,$parametro2,$parametrox)
?> 

Assim podemos passar mais de uma instrução para a função. Estes parâmetros podem ainda ser arrays. 

Parâmetros da função são obrigatórios?  

Os parâmetros de uma função em PHP podem não ser obrigatórios. Para não obrigar um valor, precisamos deixar algo estado nesta variável. Exemplo: 

function minhaFuncao3($texto='')
{
    if(strlen($texto))
    {
        echo $texto;
        return true;
    }
    else
    {
        echo "nenhum texto";
        return false;
    }
}

minhaFuncao3('');
#retorno = false
#echo na tela sera nenhum texto

minhaFuncao3('teste');
#retorno = true
#echo na tela será teste
?>

No exemplo acima, criamos a função chamada minhaFuncao3 com parâmetro $texto = '' (texto igual a vazio). Assim com a função STRLEN que é nativa do PHP, consultamos para saber se tem algum texto dentro da variável. A STRLEN me retorna o número de caracteres presentes em uma string (a nossa variável por exemplo).  

Se a STRLEN retornar 0 (que é o caso quando chamamos a primeira vez a função), aí a minhaFuncao3 vai escrever na tela "nenhum texto" e depois retornar que a função é falsa.  

Se a STRLEN retornar > 0 (que é o segundo caso), aí a minhaFuncao3 vai escrever este texto passado por parâmetro e retonar verdadeira a função. 

Uau, foi bastante informação não foi? Bom para explicar melhor. Quando chamarmos a minhaFuncao3 sem passar nenhum texto, ela vai retornar falsa e escrever a mensagem de "erro" na tela. Se não ela vai escrever o texto passado por parâmetro. Fizemos isto para mostrar como funcionam os parâmetros em funções.   

A função recursiva 

Chama-se função recursiva a função que chama ela mesma. A utilidade desta função é muito boa quando se trabalha com hierarquia de dados ou recursividade. Vamos a um exemplo prático: 

function minhaFuncao4($contador)
{
    if($contador < 10)
    {
        echo "O contador agora é: ".$contador."
";
        $contador++;
        minhaFuncao4($contador);
    }
    return true;
}
 
minhaFuncao4('1');
/*
RESULTADO
O contador agora e: 1
O contador agora e: 2
O contador agora e: 3
O contador agora e: 4
O contador agora e: 5
O contador agora e: 6
O contador agora e: 7
O contador agora e: 8
O contador agora e: 9
*/
?>

 

Como pode ver acima, fizemos uma função contador. Nela passamos por parâmetro o contador que é incrementado dentro da própria função antes de chamar ela novamente. E fazemos um teste para validar se é menor que 10, para parar o programa. 

NOTAS: 

  • Variável local: toda variável que estiver dentro de uma função é considerada local e não pode ser usada fora da função. 
  • Variável global: são aquelas que estão fora da função, estas variáveis não podem ser usadas dentro da função se não forem passadas por parâmetro. 
  • É interessante sempre utilizar algum retorno na função, como por exemplo: return true;
  • A nomenclatura convencional das funções é letras minúsculas e letra maiúscula para separar palavras. Conforme foi usado nos exemplos.

Passamos por alguns exemplos de funções. Você pode fazer seus exemplos de acordo com suas necessidades também. O próximo tópico vamos falar somente sobre exemplos do que já foi passado e criar alguns exercícios para que você possa alimentar a sua lógica de programação e verificar seus conhecimentos. 

[CURSO]118[/CURSO]