Gostou do nosso conteúdo? Te ajudou?
Nos ajude também! Faça um PIX, de qualquer valor:
programacao.progressiva@gmail.com

Variáveis de Escopo Global: global e $GLOBALS

Neste tutorial de nossa apostila de PHP, vamos aprender a usar e criar variáveis de escopo global em nossos scripts PHP.

Aconselhamos: Apostila de PHP Completa para download

Variáveis Globais

Em nosso tutorial anterior, quando falamos em escopo de uma função, dissemos que elas são escopos fechados, que não tem noção de nada de fora nem atrapalham nada fora do seu contexto, endo possível elas obterem informações via parâmetros e dar saídas via return.

Porém existe uma outra maneira de funções verem algo do mundo externo, que é através de variáveis globais.

Para usar uma variável como ela se fosse global, por exemplo $a anteriormente declarada, fazemos:
global $a

Essa técnica tem de diferente o fato de ser possível acessar essa variável de qualquer lugar dentro do script, mesmo dentro de funções, sem que as funções recebam elas como argumento.

Imagine que você quer dar um desconto de 10% em sua loja, simplesmente faça;
$desconto = 0.10;

Depois, sempre que quiser usar essa variável, faça:
global $desconto;
E saia sando normalmente, nativamente o PHP vai entender que está falando daquela variável $desconto que usou no começo do script.

E prontinho, não precisa mais sair definindo variáveis de descontos em milhares de páginas, faça apenas uma declaração, use a palavra-chave global e use esse valor onde quiser, sem precisar declarar nunca mais.

Exemplo de uso de Variável Global

Crie um script que pede um radio de uma circunferência ao usuário.
Através de uma função, exiba o valor do comprimento da circunferência e através de outra, exiba a área. Uso o valor de pi como 3.14

Nesse caso, nossa variável global vai ser o valor de pi
$pi=3.14;

Agora, sempre que quisermos usar a variável global (e não uma outra, como uma local de uma função de mesmo nome, fazemos):
$global $pi;

Pronto, agora podemos usar essa variável nas funções comprimento() e area().
Veja como ficou nosso código:
<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="testar" />
 </form> 
 <?php
  $pi = 3.14;
  $raio = $_GET['ratio'];
  
  echo "Comprimento: ".comprimento($raio)."<br/>";
  echo "Area: ".area($raio)."<br/>";
   
  function comprimento($raio){
   global $pi;
   return (2*$pi*$raio);
  }
  
  function area($raio){
   global $pi;
   return ($pi*$raio*$raio);
  }
 ?>
 </body>
</html>

Variável global com $GLOBALS

A palavra global é como se tivesse o poder de transformar qualquer variável em global, o que pode ser arriscado, por isso use sempre com cautela e muita calma, você pode ter acesso ou  dar acesso para hackers.

O mesmo podemos fazer usando um array (vamos estudar isso em breve), o $GLOBALS, que tem uma lista de todas variáveis do escopo global do script.

Se tem uma variável de nome $nome, acessamos ela globalmente através de:
$GLOBALS['nome']

Veja o script com uso de  $GLOBALS
<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="testar" />
 </form> 
 <?php
  $pi = 3.14;
  $raio = $_GET['ratio'];
  
  echo "Comprimento: ".comprimento($raio)."<br/>";
  echo "Area: ".area($raio)."<br/>";
   
  function comprimento($raio){
   return (2*$GLOBALS['pi']*$raio);
  }
  
  function area($raio){
   return ($GLOBALS['pi']*$raio*$raio);
  }
 ?>
 </body>
</html>
Mais fonte de estudo:
http://php.net/manual/pt_BR/language.variables.scope.php
http://php.net/manual/pt_BR/reserved.variables.globals.php