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

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);
  }
 ?>

Veja também

O melhor PC para programar

O melhor celular para programar