Nenhum produto encontrado nessa seleção.
Uma função é um trecho de código encapsulado com objetivo específico que pode (ou não) receber parâmetros, utilizar qualquer parte do PHP (incluindo outras funções) para manipular os dados e retornar um valor de qualquer tipo.
O código dentro de uma função é encapsulado do código externo (e vice-versa), ou seja, a não ser que você queira, nada que estiver entre as chaves { e } (ações da função) é acessível ao código fora delas.
Criando uma função em php
Para declarar uma função em PHP, utilizamos o operador "function" seguido do nome que desejamos, os argumentos (parâmetros) que a função poderá receber, e, por fim, as ações vêm entre chaves { e }.
// Função com dois parâmetros function nome_da_funcao ( $parametro1, $parametro2 ) { // Cria uma variável local $retorno $retorno = $parametro1 + $parametro2; // Retorna a soma do parâmetro 1 e 2 return $retorno; }
Perceba que a palavra "return" (retorno) serve para retornar o valor que desejamos depois de executar as ações dentro da função. O interpretador do PHP para de ler o restante da função assim que encontrar a palavra "return", por este motivo, na grande maioria dos casos utilizamos essa palavra ao final da função para retornar o valor que desejamos.
No próximo exemplo, vamos criar uma função que calcula o quadrado de qualquer valor enviado.
// Função para calcular o quadrado function calcula_quadrado ( $numero ) { // Garante que o parâmetro é do tipo numérico $numero = (int)$numero; // Retorna o número ao quadrado return $numero * $numero; } // Executa a função e exibe 15625 na tela echo calcula_quadrado(125);
Veja acima, que a função não executa nenhuma ação se ela não for chamada.
Para chamar uma função, utilizamos apenas seu nome, e os parâmetros entre parênteses e separados por vírgula.
Você também pode criar funções sem parâmetro, ou sem a palavra "return". Veja:
// Função sem parâmetros e sem retorno function exibe_frase () { echo 'Eu sou uma função que executa a ação.'; } // Chama a função exibe_frase();
Variáveis
A seguir vamos ver a ligação entre as funções e as variáveis.
Variáveis Globais e Variáveis Locais
As variáveis criadas dentro das função têm escopo local, isso significa que o código externo à função não sabe da existência de qualquer variável dentro do mesma.
Veja um exemplo de código que irá retornar um erro:
// Uma variável fora da função $variavel_externa = 'Valor'; // Uma função function erro () { // Variável local $variavel_local = 'Valor'; // Tenta acessar a variável externa echo $variavel_externa; } // Chama a função e obtém um erro: // Undefined variable: variavel_externa erro(); // Tenta acessar a variável local da função erro() // Gera outro erro: Undefined variable: variavel_local echo $variavel_local;
Para definir que uma variável terá escopo global, ou seja, acessível em qualquer parte do código, devemos utilizar a palavra chave "global". Por exemplo:
<?php // Uma variável fora da função $variavel_externa = 'Valor externo'; // Uma função function certo () { // A variável abaixo estará acessível dentro e fora da função global $variavel_global; // A variável externa também estará acessível na função global $variavel_externa; // Define o valor da variável global $variavel_global = 'Valor local'; // Exibe a variável externa echo $variavel_externa; } // Chama a função e exibe a variável externa certo(); // Acessa a variável criada dentro da função echo $variavel_global;
Variáveis estáticas
Variáveis estáticas são variáveis que mantém o valor da última execução da função, ou seja, se você executar a função duas vezes somando o valor da variável estática (apenas como exemplo), ele sempre irá aumentar de onde parou na última execução.
Veja um exemplo:
<?php function andar ( $distancia ) { // Define que a variável é estática static $soma; // Soma a distancia $soma += $distancia; // Retorna a distancia return $soma; } // O valor da soma será sempre aumentado echo andar(1); // 1 echo andar(10); // 11 echo andar(21); // 32 echo andar(220); // 252 echo andar(1); // 253
Passando parâmetros para a função
Como descrevi no início do artigo, podemos (ou não) passar parâmetros para a função. Os parâmetros são simplesmente valores que podemos manipular nas ações da função para retornar um valor qualquer.
Por exemplo:
<?php // Uma função que remove espaços das frases function remove_espacos( $frase ) { return preg_replace('/s/is', '', $frase); } // Uma frase qualquer; $texto_qualquer = 'Eu adoro trabalhar com PHP'; // Exibe: EuadorotrabalharcomPHP echo remove_espacos($texto_qualquer);
No exemplo acima, o parâmetro é a variável $frase.
Sempre que chamarmos a função, qualquer coisa que colocarmos entre parênteses:
echo remove_espacos('Qualquer coisa');
Será o valor do parâmetro $frase.
Se quisermos criar mais de um parâmetro, devemos separá-los por vírgula:
<?php // Uma função que soma os parâmetros function soma_parametros ( $num1, $num2, $num3 ) { // Retorna a soma return $num1 + $num2 + $num3; } // Chama a função echo soma_parametros(10, 50, 101); // 161
Quando chamamos a função, devemos enviar os valores na mesma ordem em que os parâmetros foram criados, como você pôde perceber no trecho de código acima.
Você também pode definir valores padrão para os parâmetros, assim, se o desenvolvedor esquecer de enviar os parâmetros, o valor definido é assumido.
Veja o mesmo exemplo anterior, agora com alguns parâmetros definidos:
<?php // Uma função que soma os parâmetros function soma_parametros ( $num1 = 10, $num2, $num3 = 1 ) { // Retorna a soma return $num1 + $num2 + $num3; } // Chama a função echo soma_parametros(false, 50); // 51
No trecho acima, estou definindo valores para os parâmetros 1 e 3. Se eu chamar a função com um valor falso no local onde apareceria o parâmetro 1, o valor 0 será assumido pela função. Como o parâmetro 2 não tem valor definido, é obrigatório enviá-lo à função, portanto, 50 é definido para ele. O parâmetro 3 tem valor definido, portanto, ele não é obrigatório, a função irá assumir o valor "1" para ele.
Por isso, o trecho de código abaixo:
echo soma_parametros(false, 50); // 51
Seria o mesmo que eu somar 0 + 50 + 1 = 51.
Pode parecer confuso, mas na verdade é bastante simples.
Passando parâmetros por referência
Até agora, estamos passando valores para a função de maneira comum, ou seja, alterações feitas no valor da variável, não afetaram seu valor fora da função. Se você precisa alterar o valor da variável dentro da função e obter esse mesmo valor fora dela, é possível passar o parâmetro por referência.
Para isso, basta adicionar um & antes do parâmetro.
<?php // Cria uma função que soma o valor um com o valor function soma ( &$valor1, $valor2 ) { // Faz a soma $valor1 += $valor2; } // Cria uma variável chamada $qlq_coisa $qlq_coisa = 50; // Executa a função soma($qlq_coisa, 10); // Mostra 60 na tela echo $qlq_coisa;
Perceba que, pelo simples fato de ter um & antes do primeiro parâmetro, qualquer coisa que eu enviar para a função no primeiro parâmetro, será passado por referência e as alterações feitas em seu valor dentro da função, afetam seu valor fora dela.
Parâmetros dinâmicos
Caso seja necessário criar funções que tenham vários parâmetros criados dinamicamente, basta criar uma função sem parâmetros e enviar vários argumentos (valores) quando for chamar a mesma.
O PHP tem várias funções para extrair valores enviados para a função, como func_get_args, que retorna um array contendo os argumentos enviados na chamada da função.
Veja um exemplo:
<?php // Cria uma função que soma o valor um com o valor function exibe_parametros () { // Array com os parâmetros da função $paramentros = func_get_args(); // Laço para exibir os parâmetros foreach ( $paramentros as $posicao => $valor ) { // Exibe todos os parâmetros echo 'Parâmetro ' . $posicao . ': ' . $valor . '<br>'; } } // Chama a função com quantos parâmetros quiser exibe_parametros('Valor 1', 'Valor 2', 'Valor 3');
No trecho acima, minha função não tem parâmetros:
function exibe_parametros () { }
Mas na chamada, envio vários argumentos (valores dos parâmetros):
exibe_parametros('Valor 1', 'Valor 2', 'Valor 3');
Com isso, posso obter esses valores dinamicamente dentro da função.
Recursividade: função que chama ela mesma
O PHP permite recursividade, ou seja, uma função que chama ela mesma dentro de suas ações. Veja um exemplo:
<?php // Conta de 1 até um limite function conta_10 ( $limite = 10 ) { // Especifica que o valor será estático static $valor; // Verifica se o valor é menor ou igual ao limite if ( $valor < $limite ) { // Soma mais um no valor $valor++; // Mostra o valor echo $valor . '<br>'; // Chama a função novamente e começa tudo de novo conta_10(); } } // Chama a função apenas uma vez // A recursividade fará o resto das chamadas conta_10();
Na função acima, ela é chamada novamente em suas ações até que o $valor (variável estática) atinja o limite (parâmetro).
Como resultado, teremos:
1<br> 2<br> 3<br> 4<br> 5<br> 6<br> 7<br> 8<br> 9<br> 10<br>
Não é algo muito útil, mas detalha bem como funciona a recursividade.
Concluindo
As funções são excelentes para reutilização, o que poupa tempo para os desenvolvedores. Você pode criar uma função faz algo simples e utilizá-la em várias partes do seu código.
Além disso, fica bem mais simples para dar manutenção, melhorar, ou alterar seu código, já que tudo fica em um único local.
As funções também farão parte da sua vida quando iniciarmos as partes sobre orientação a objetos, portanto, aprenda bem todos os trechos detalhados nesse artigo.
Em caso de dúvidas, basta perguntar nos comentários abaixo.
Não deixe de seguir o restante das aulas do nosso curso gratuito de PHP.