22
2012
Programando em PHP #5 – Funções
Bom, agora que já vimos o “básico” do PHP, podemos começar a brincar um pouco de programar de verdade, hoje vou abordar um assunto muito legal, que é FUNÇÕES.
Uma função, vai ser nada menos, que uma forma rapida de execurtamos um comando ou alguma verificação. Ou seja, já imaginou se toda vez que a gente quiser descobrir qual é o valor da multiplicação de dois numeros, vamos ter que declarar as variáveis especificas para cada número, e repetir várias vezes se houver necessidade, sendo assim, a quantidade de variáveis vai só aumentar, vamos ver um exemplo:
<?php //Vou colocar 3 formas de fazer uma multiplicação, sem o uso de uma função // Primeira $a = 2; $b = 3; echo "O resultado é: ". $a * $b ."<br>"; //Segunda echo "O resultado é: ". 2 * 3 ."<br>"; //Terceira $valor01 = 2; $valor02 = 3; $resultado = $valor01 * $valor02; echo "O resultado é: ". $resultado; ?>
* Existem outras formas de representar essa multiplicação, mas acredito que essas sejam as mais comuns.
O que vai ser impresso na tela:
O resultado é: 6
O resultado é: 6
O resultado é: 6
A gente pode perceber, que usamos variáveis diferentes, porque estamos dentro do mesmo script. Além de ficar grande e feio, o nosso script ia começar a se tornar um programa dificil para futuras manutenções, não é o caso desse pequeno exemplo.
Então, vamos entender o que é uma função, que é apenas um pedaço de código com um objetivo específico. Com uma estrutura unica que recebe um conjun de parâmetros e retorna um dado, ou seja uma resposta. A vantagem, que uma função é declarada uma unica vez, mas pode ser utilizada inúmeras vezes.
Criando uma função
O primeiro passo é declararmos o nome da função, para isso vamos usar o operador function, assim: function minha_funcao (parâmentros) {}. Lembrando que o nome da função deve ser sempre iniciado por uma letra e nunca ter espaços em branco. Os parâmetros que a função irá receber deverão ser separados por virgula. E dentro das chaves {} vem o código da função. Feito isso, vamos colocar um return, para retornar o resultado da função.
Exemplo de função com passagem de 1 (um) parâmetro.
<?php
//Função de multiplicação de um número sem impressão na tela
function multiplicar($numero){
$resultado = $numero * $numero ."<br>";
return $resultado;
}
//Vamos atribuir o valor 2 (dois) para a função
echo multiplicar(2);
//Função de multiplicação de um número com impressão na tela
function multiplicar_echo($numero){
echo $resultado = $numero * $numero;
return $resultado;
}
//Vamos atribuir o valor 4 (dois) para a função
multiplicar_echo(4)
?>
O que vai ser impresso na tela:
4
16
Agora, vamos ver uma função com passagem de 2 (dois) parâmetros:
<?php
//Função para medir a velocidade média
function velocidade_media($espaco, $tempo){
echo $vm = $espaco/$tempo ." km/h";
return $vm;
}
#Vou usar o espaço em km e o tempo em horas
//Vamos fornecer os dados, na ordem que é pedido na função, espaço e tempo
velocidade_media(100, 10);
?>
O que vai ser impresso na tela: 10 km/h
Funções com Variáveis Globais
Nas funções criadas nos exemplos acima, foram criadas com variáveis locais, ou seja. Agora vamos ver como criar uma função externa, ou global. Para acessar uma variável externa ao contexto de uma função sem passa-la como parâmetro é necessário declarar ela como “global”.
<?php
$contador = 1;
function multiplicar($numero){
global $contador;
$contador++;
echo $resultado = $numero * $numero ."<br>";
return $resultado;
}
while ($contador <= 10){
multiplicar($contador);
}
?>
O que vai ser impresso na tela:
1
4
9
16
25
36
49
64
81
100
No exemplo acima, eu declarei a variável $contador como global e depois eu usei ele em uma estrutura de comando o WHILE, então, enquanto o $contador for menor igual a 10 (dez) a função “multiplicar” vai ser usada. Então em resumo, função com variáveis locais e globais é fácil.
Função com Variável Estática
Com variáveis estáticas, podemos armazenar o valor que foi atribuido na última execução, para isso, basta a gente declarar a variável estática com o operador “static”.
<?php
function somar($numero){
static $soma;
$soma += $numero;
$resultado = $numero + $soma;
echo "$numero + $soma = $resultado <br>";
}
for ($i=0; $i <= 10; $i++){
somar($i);
}
?>
O que vai ser impresso na tela:
0 + 0 = 0
1 + 1 = 2
2 + 3 = 5
3 + 6 = 9
4 + 10 = 14
5 + 15 = 20
6 + 21 = 27
7 + 28 = 35
8 + 36 = 44
9 + 45 = 54
10 + 55 = 65
No PHP também é possivel definir uma função com número de argumentos variáveis, ou seja, a gente consegue receber as variáveis de forma dinâmica, mesmo sem saber quais são e quantos são. Para obter quais são, vamos utilizar a função “func_get_args()” e para obter a quantidade de argumentos, usamos a função “func_num_args()”.
<?php
function listar_nomes(){
$nomes = func_get_args();
$quantidade = func_num_args();
for ($i=0; $i<$quantidade; $i++){
echo "Eu me chamo " . $nomes[$i] ."<br>";
}
}
listar_nomes('João', 'Maria', 'Renan', 'Rafael');
?>
O que vai ser impresso na tela:
Eu me chamo João
Eu me chamo Maria
Eu me chamo Renan
Eu me chamo Rafael
Recursão
E por ultimo e não menos importante, vamos falar de recursão, que nada mais é, do que chamar a função dentro da propria função.
<?php
function fatorial($numero){
if($numero == 1){
return $numero;
}else{
return $numero * fatorial($numero - 1);
}
}
for ($i=1; $i<=5; $i++){
echo "Fatorial de ".$i." é ". fatorial($i) ."<br>";
}
?>
O que vai ser impresso na tela:
Fatorial de 1 é 1
Fatorial de 2 é 2
Fatorial de 3 é 6
Fatorial de 4 é 24
Fatorial de 5 é 120

Artigo criado por














Muito bacana cara ,tenho curtido muito as aulas ,parabéns.
[Reply]
Renan M. Pimentel Reply:
February 22nd, 2012 at 15:35
Que bom cara, estamos mexendo uns pauzinhos para sortear uns livros para vocês que estão começando!
[Reply]
Muito boas as aulas cara, to gostando e aprendendo bastante, obrigado
[Reply]
ta legal…
[Reply]
Está me ajudando pacas, ainda mais que vejo pelo email no trabalho. Estamos juntos.
Abraços.
[Reply]
Muito bom, pode continuar que pra quem ta aprendendo é muito bom
[Reply]
Mt bom!!!!!!!!
[Reply]
Po cara está muito bom, agora tem tido bem menos dúvidas.
[Reply]
parabens pelo site!!!
[Reply]
Olá Renan, estou tentando acompanhar o curso de php pelo site, seria possível a disponibilização de uma apostila de php em pdf? Parabéns pelo curso! Obrigado.
[Reply]
como eu faço teste de mesa usando esses algoritmos que vc nos ensino
[Reply]
Muito bom, gostei mesmo.
[Reply]
muito legal mesmo to gostando pacas mas mas uando vai sair os proximos post ja estou ancioso enuanto isso vou buscando mais coisas por ai vlw mesmo estao de parabens
[Reply]