Bora ajudar o programador a transformar café em código?

Mostrando postagens com marcador Como invocar uma função. Mostrar todas as postagens
Mostrando postagens com marcador Como invocar uma função. Mostrar todas as postagens

Funções invocando Função

Neste tutorial de nosso curso de PHP, vamos ver como é a técnica de uma função invocar outra função dentro dela.

Não deixe de ver: Apostila para download

Função invocando Função

Uma das técnicas mais comuns em funções é o ato de uma função invocar outra.
Isso mesmo, dentro de uma função, é normal você invocar outra.

Vamos fazer um script que pede o raio para um usuário e calcula sua área:
<html>
 <head>
  <title>Apostila PHP Progressivo</title>
 </head>
 <body>
 <form action="" method="get">
  Raio: <input type="number" name="ratio" /><br />
  <input type="submit" name="submit" value="Calcular" />
 </form> 
 <?php
  $raio = $_GET['ratio'];
  echo "A área é: ".area($raio);
  
  function area($raio){
   return pi()*pow($raio,2);
  }
 ?>
 </body>
</html>
Note que usamos duas funções
pi() - que retorna o valor matemático de PI
pow() - função de potenciação

Essa é uma técnica bem comum e vamos usar bastante, principalmente no tutorial seguinte, sobre funções recursivas.

Exemplo de função invocando função

Crie um script que receba os coeficientes de uma equação do segundo grau, e diga se ela existe ou não, se tem raízes reais distintas, raízes reais iguais ou raízes imaginárias.

Já fizemos um script que calcula as raízes de uma equação do segundo grau.

Aqui vamos usar duas funções:
equacao() - recebe os 3 coeficientes, a, b e c e diz a classificação dela. Para isso, usa a função seguinte
delta() - função que recebe os 3 coeficientes como argumento e retorna seu valor
<html>
 <head>
  <title>Apostila PHP Progressivo</title>
 </head>
 <body>
 <form action="" method="get">
  Coeficiente a: <input type="number" name="a" /><br />
  Coeficiente b: <input type="number" name="b" /><br />
  Coeficiente c: <input type="number" name="c" /><br />
  <input type="submit" name="submit" value="Calcular" />
 </form> 
 <?php
  $a = $_GET['a'];
  $b = $_GET['b'];
  $c = $_GET['c'];
  
  echo "A equação : ".equacao($a,$b,$c);
  
  function equacao($a,$b,$c){
   $delta=delta($a,$b,$c);
   
    if($a==0)
     return "não existe";
    elseif($delta==0)
     return "duas raízes reais iguais";
    elseif($delta>0)
     return "duas raízes reais distintas";
    else
     return "duas raízes imaginárias";
  }
  
  function delta($a,$b,$c){
   return ($b*$b - 4*$a*$c);
  }
 ?>
 </body>
</html>
Na echo, invocamos a equacao().

A primeira coisa que esta variável faz é calcular o valor de $delta, usando a função delta().
Depois, faz os testes necessários para saber se a equação existe e como são suas raízes.

Note que a função delta() vem até depois da função equacao(), pois quando você invoca uma função o interpretador sai caçando no script, ou nas páginas extras que você adicionou.

Você pode inclusive invocar várias vezes a delta.
Veja como fica agora sem usar a variável $delta, e sim usando a função delta() dentro dos testes condicionais:
 <?php
  $a = $_GET['a'];
  $b = $_GET['b'];
  $c = $_GET['c'];
  
  echo "A equação : ".equacao($a,$b,$c);
  
  function equacao($a,$b,$c){
   
    if($a==0)
     return "não existe";
    elseif(delta($a,$b,$c)==0)
     return "duas raízes reais iguais";
    elseif(delta($a,$b,$c)>0)
     return "duas raízes reais distintas";
    else
     return "duas raízes imaginárias";
  }
  
  function delta($a,$b,$c){
   return ($b*$b - 4*$a*$c);
  }
 ?>

Função - Como invocar e Criar uma função

Neste tutorial de nossa apostila de PHP, vamos aprender como invocar, ou seja, como chamar as funções, para fazerem elas serem executadas e vamos aprender a criar funções simples.

Apostila de PHP para Download

Como invocar uma Função

Já usamos, no decorrer de nossa apostila, algumas funções.
A primeira delas foi a print():
<?php
   print("Apostila PHP Progressivo");
?>
Ela funciona como a echo, simplesmente exibe uma string.

Detectamos que é uma função pelo par de parêntesis: print()
As vezes tem algo dentro do parêntesis, as vezes não tem, você entenderam o motivo.

Outra função que vimos, foi a de exponenciação: pow(base, expoente)
 <?php
   echo "3 elevado a 4: ".pow(3,4);
 ?>

pow() é uma função, que recebe dois valores (3 e 4) e retornou um valor, o 81, com o resultado da operação.

É simplesmente assim que invocamos funções.

Como criar uma Função em PHP

Embora o PHP tenha uma vasta gama de funções prontas, escritas em algum lugar, e podendo ser invocada milhões de vezes que você quiser, muitas vezes vamos precisar criar nossas próprias funções.

A sintaxe para declarar uma função é:
function nome_funcao (parameteros) {
   codigo;
   codigo;

   return valor;
}

Ou seja, digitamos function, damos um nome que quisermos a função, vem os parêntesis, os parâmetros que queremos passar para a função, e o par de chaves.

Dentro do par de chaves, vem o código, o corpo da função, onde a mágica vai ocorrer.
Por fim, o comando return que retorna algum valor.

Os parâmetros e return não são obrigatórios e vamos aprender mais adiante como usar eles.

Vamos criar uma função, chamada olamundo() que simplesmente existe "Olá, mundo":
<html>
 <head>
  <title>Apostila PHP Progressivo</title>
 </head>
 <body>
 <?php
   function olamundo(){
    echo "Olá, mundo";
   }
 ?>
 </body>
</html>
Quando rodamos a página, nada acontece.
Nem o Olá, mundo aparece. Por que?

Função é um pedaço de código que fica ali, guardado, na dele.
Só faz algo quando invocamos. Vamos chamar nossa função olamundo():
<html>
 <head>
  <title>Apostila PHP Progressivo</title>
 </head>
 <body>
 <?php
  olamundo();
  
  function olamundo(){
    echo "Olá, mundo";
  }
 ?>
 </body>
</html>
Agora sim, aparece!

Experimente digitar:
olamundo();
olamundo();
olamundo();

Vai aparecer a mensagem 3x. E não tivemos que dar 3 echo.
Cada vez que invocamos, um bloco específico de código é executado, não precisamos ficar repetindo o mesmo código várias vezes.

É só criar funções bem específicas, com tarefas simples e invocar elas.

Vamos agora criar mais uma, a curso()
Que exibe na tela "Curso PHP Progressvo"
<html>
 <head>
  <title>Apostila PHP Progressivo</title>
 </head>
 <body>
 <?php
  olamundo();
  curso();
  
  function olamundo(){
    echo "Olá, mundo<br />";
  }
  function curso(){
    echo "Curso PHP Progressivo<br />";
  }
 ?>
 </body>
</html>
O resultado são as duas strings, printadas no documento HTML.

Captou a ideia por trás das funções?
Calma que estas aí são bem simples, vamos fazer umas mais interessantes no próximo tutorial.

Nomes de funções

Antes de criar suas funções, atenção para algumas coisas:

  • Não deve existir nenhuma outra função com esse nome (nada de criar uma chamada pow(), por exemplo)
  • Só pode conter letra, dígito ou sublinhado
  • Não comece por dígitos
  • Tanto faz ser maiúscula ou minúscula, não são case sensitive, minhafuncao() é a mesma de MINHAFUNCAO()

Veja também

O melhor PC para programar

O melhor celular para programar