As 3 frases são:
Este documento descreve características e exemplos de funções em PHP, incluindo declaração, parâmetros, passagem de valores, retorno de valores e recursividade. É apresentado um exemplo ilustrando a diferença entre passagem de parâmetros por valor e por referência.
2. Funções
Nome da função
parâmetros de entrada valores de saída
código da função
3. Funções: características
Permitem a modularidade e reutilização do código
Permitem uma gestão centralizada do código
São invocadas/chamadas quando são necessárias
• Podem possuir parâmetros de entrada
• Podem retornar valores de saída
Funções pré-definidas (built-in)
• Mais de 1000 numa instalação standard do PHP
• Funções adicionais disponíveis através da instalação de pacotes/
bibliotecas
Funções definidas pelo utilizador
4. Declaração e invocação de uma função
Declarar uma função
• function nomefuncao(parâmetros/args) {
codigodafuncao
}
• function escreve_ola() {
echo “Olá. Esta é a minha primeira função!";
}
Invocar/chamar uma função
• escreve_ola();
5. Passagem de parâmetros
Valores passados para dentro da função aquando da sua chamada
• <?php
function calctaxa($preco, $taxa) {
$total = $preco + ($preco * $taxa);
echo “custo total: $total" . "<br />";
}
$a = 2;
$b = 3;
calctaxa($a, $b);
?>
> “custo total: 8”
6. Passagem de parâmetros por valor
As alterações efetuadas dentro da função aos valores armazenados nos
parâmetros passados por valor são ignoradas fora da função
• <?php
function calctaxa($preco, $taxa) {
$total = $preco + ($preco * $taxa);
$preco++;
$taxa++;
echo $preco . "<br />";
echo $taxa . "<br />";
echo “custo total: $total" . "<br />";
}
$preco = 2;
$taxa = 2;
calctaxa($preco, $taxa);
echo $preco . "<br />";
echo $taxa;
?>
7. Passagem de parâmetros por valor
As alterações efetuadas dentro da função aos valores armazenados nos
parâmetros passados por valor são ignoradas fora da função
• <?php
function calctaxa($preco, $taxa) {
$total = $preco + ($preco * $taxa);
$preco++;
$taxa++;
echo $preco . "<br />"; // 3
echo $taxa . "<br />"; // 3
echo “custo total: $total" . "<br />"; // ...6
}
$preco = 2;
$taxa = 2;
calctaxa($preco, $taxa);
echo $preco . "<br />"; // 2
echo $taxa; // 2
?>
8. Passagem de parâmetros por referência
As alterações efetuadas dentro da função aos valores armazenados nos
parâmetros passados por valor são visíveis fora da função
• <?php
function calctaxa($preco, &$t) {
$total = $preco + ($preco * $t);
$preco++;
$t++;
echo $preco . "<br />";
echo $t . "<br />";
echo “custo total: $total" . "<br />";
}
$preco = 2;
$taxa = 2;
calctaxa($preco, $taxa);
echo $preco . "<br />";
echo $taxa;
?>
9. Passagem de parâmetros por referência
As alterações efetuadas dentro da função aos valores armazenados nos
parâmetros passados por valor são visíveis fora da função
• <?php
function calctaxa($preco, &$t) {
$total = $preco + ($preco * $t);
$preco++;
$t++;
echo $preco . "<br />"; // 3
echo $t . "<br />"; // 3
echo “custo total: $total" . "<br />"; // ...6
}
$preco = 2;
$taxa = 2;
calctaxa($preco, $taxa);
echo $preco . "<br />"; // 2
echo $taxa; // 3
?>
10. Passagem de parâmetros com valores por defeito
Valor atribuído por defeito ao parâmetro, caso a invocação da função não
seja feita com esse parâmetro
• <?php
function calctaxa($preco, $taxa=3) {
$total = $preco + ($preco * $taxa);
$preco++;
$taxa++;
echo $preco . "<br />";
echo $taxa . "<br />";
echo “custo total: $total" . "<br />";
}
$pr = 2;
$ta = 2;
calctaxa($pr);
?>
11. Passagem de parâmetros com valores por defeito
Valor atribuído por defeito ao parâmetro, caso a invocação da função não
seja feita com esse parâmetro
• <?php
function calctaxa($preco, $taxa=3) {
$total = $preco + ($preco * $taxa);
$preco++;
$taxa++;
echo $preco . "<br />"; // 3
echo $taxa . "<br />"; // 4
echo “custo total: $total" . "<br />"; // ...8
}
$pr = 2;
$ta = 2;
calctaxa($pr);
?>
12. Passagem de parâmetros com parâmetros
opcionais
Caso um dado parâmetro seja opcional, na invocação da função sem esse
parâmetro ser-lhe-á atribuído um valor vazio/nulo
• <?php
function calctaxa($preco, $taxa=””) {
$total = $preco + ($preco * $taxa);
$preco++;
$taxa++;
echo $preco . "<br />";
echo $taxa . "<br />";
echo “custo total: $total" . "<br />";
}
$pr = 2;
$ta = 2;
calctaxa($pr);
?>
13. Passagem de parâmetros com parâmetros
opcionais
Caso um dado parâmetro seja opcional, na invocação da função sem esse
parâmetro ser-lhe-á atribuído um valor vazio/nulo
• <?php
function calctaxa($preco, $taxa=””) {
$total = $preco + ($preco * $taxa);
$preco++;
$taxa++;
echo $preco . "<br />"; // 3
echo $taxa . "<br />"; // 1
echo “custo total: $total" . "<br />"; //... 2
}
$pr = 2;
$ta = 2;
calctaxa($pr);
?>
14. Passagem de parâmetros com parâmetros
opcionais
Caso um dado parâmetro seja opcional, na invocação da função sem esse
parâmetro ser-lhe-á atribuído um valor vazio/nulo
• <?php
function somanumeros($num1=“”, $num2="", $num3="") {
$total = $num1 + $num2 + $num3;
echo "soma: $total" . "<br />";
}!
somanumeros(1,2,3);
somanumeros(1,2);
somanumeros(1,"",3);
somanumeros(1);
somanumeros();
?>
15. Passagem de parâmetros com parâmetros
opcionais
Caso um dado parâmetro seja opcional, na invocação da função sem esse
parâmetro ser-lhe-á atribuído um valor vazio/nulo
• <?php
function somanumeros($num1=“”, $num2="", $num3="") {
$total = $num1 + $num2 + $num3;
echo "soma: $total" . "<br />";
}!
somanumeros(1,2,3); // “soma: 6”
somanumeros(1,2); // “soma: 3”
somanumeros(1,"",3); // “soma: 4”
somanumeros(1); // “soma: 1”
somanumeros(); // “soma: 0”
?>
16. Retorno de valores de saída
A função devolve um ou mais valores que poderão ser atribuídos a
variáveis aquando da sua invocação/chamada
• <?php
function somanumeros($num1=“”, $num2="", $num3="") {
$total = $num1 + $num2 + $num3;
return $total;
}!
$resultado = somanumeros(1,2,3);
echo “<br />” . somanumeros(1,2,3);
?>
17. Retorno de valores de saída
A função devolve um ou mais valores que poderão ser atribuídos a
variáveis aquando da sua invocação/chamada
• <?php
function somanumeros($num1=“”, $num2="", $num3="") {
$total = $num1 + $num2 + $num3;
return $total;
}!
$resultado = somanumeros(1,2,3);
echo “<br />” . somanumeros(1,2,3); // 6
?>
É possível retornar múltiplos valores através de arrays, ou seja, o valor de
retorno pode ser um array com múltiplos elementos!
18. Recursividade
Funções recursivas são funções que se invocam a si próprias.
Exemplo: Cálculo da soma dos n números naturais, menores ou iguais a n
• <?php
function soman($n) {
if ($n <=0) { // impede recursividade infinita
return "cálculo não efetuado";
} elseif ($n==1) { // fim de recursividade
return 1;
} else {
return $n + soman($n-1);
}
}!
?>