W3docs

global

A palavra-chave "global" é usada em PHP para acessar uma variável declarada fora da função ou classe atual. Explore sintaxe e uso neste artigo.

A Palavra-chave "global" do PHP: Um Guia Completo

Em PHP, as variáveis têm um escopo limitado — uma variável criada dentro de uma função é local a essa função e não pode ver variáveis definidas no script principal, e vice-versa. A palavra-chave global preenche essa lacuna: ela diz a uma função para usar a mesma variável que existe no escopo global (nível do script) em vez de criar uma nova variável local.

Esta página aborda a sintaxe do global, como o escopo de variáveis funciona, a relação entre global e o superglobal $GLOBALS, exemplos práticos, armadilhas comuns e quando você deve optar por uma alternativa mais limpa.

Entendendo o escopo de variáveis

Por padrão, uma variável definida fora de uma função não é visível dentro dela:

<?php
$message = "Hello";

function show() {
  echo $message; // Notice: Undefined variable $message
}

show();

A função show() não tem acesso a $message porque $message vive no escopo global e show() tem seu próprio escopo local separado. A palavra-chave global é uma forma de dar à função acesso a essa variável externa.

Sintaxe

A palavra-chave "global" é usada para acessar uma variável global em PHP. Aqui está a sintaxe básica para usar a palavra-chave "global":

A sintaxe PHP do global

<?php
$variableName = "initial value";

function functionName() {
  global $variableName;
  // code to be executed
}

Neste exemplo, a palavra-chave global é usada para acessar uma variável chamada $variableName declarada fora da função atual. Uma vez declarada como global, qualquer alteração que a função fizer em $variableName é refletida no escopo externo, e qualquer alteração feita fora é visível dentro da função.

Você também pode importar várias variáveis globais de uma vez, separando-as com vírgulas:

<?php
$x = 5;
$y = 10;

function addThem() {
  global $x, $y;
  echo $x + $y; // Output: 15
}

addThem();

Exemplos

Vejamos alguns exemplos práticos de como a palavra-chave "global" pode ser usada:

Exemplos de global em PHP

<?php

// Example 1
$counter = 0;

function incrementCounter()
{
  global $counter;
  $counter++;
}

incrementCounter();
echo $counter . PHP_EOL; // Output: 1

// Example 2
$color = "red";

function changeColor()
{
  global $color;
  $color = "blue";
}

changeColor();
echo $color; // Output: blue

Nestes exemplos, usamos a palavra-chave global para acessar variáveis declaradas fora da função atual e modificar seus valores.

global vs. o array $GLOBALS

PHP também expõe todas as variáveis globais através do superglobal $GLOBALS — um array associativo indexado pelo nome da variável. Ao contrário do global, o $GLOBALS está disponível em todos os escopos sem declaração, portanto as duas funções a seguir são equivalentes:

<?php
$total = 100;

function withGlobal() {
  global $total;
  $total += 1;
}

function withGlobals() {
  $GLOBALS['total'] += 1;
}

withGlobal();
withGlobals();
echo $total; // Output: 102

$GLOBALS é útil quando você precisa de apenas uma ou duas variáveis externas, pois evita uma linha de declaração global separada. Ambas as abordagens leem e escrevem nas mesmas variáveis subjacentes.

Armadilhas comuns

  • global só funciona para variáveis que já existem ou que você pretende criar no escopo global. Digitar incorretamente o nome da variável cria silenciosamente uma variável global diferente em vez de gerar um erro.
  • Deve vir antes de você usar a variável. Declare global $name; no topo da função, antes de qualquer referência a $name.
  • global não faz nada para constantes ou variáveis static — é exclusivamente para variáveis comuns de escopo global.
  • Dependências ocultas. Uma função que depende do global pode se comportar de forma diferente dependendo do estado do script, o que torna mais difícil testar em isolamento.

Benefícios

Usar a palavra-chave "global" tem vários benefícios, incluindo:

  • Acesso a variáveis globais: A palavra-chave "global" permite acessar e modificar variáveis declaradas fora da função ou classe atual.
  • Nota sobre manutenibilidade: Embora o global forneça acesso direto a variáveis do escopo externo, o uso excessivo pode tornar o código mais difícil de depurar e testar. O desenvolvimento moderno em PHP frequentemente prefere passar variáveis como parâmetros de função, usar injeção de dependência ou acessar o array superglobal $GLOBALS quando necessário.

Conclusão

Em conclusão, a palavra-chave "global" permite que desenvolvedores PHP acessem variáveis declaradas fora da função ou classe atual. Embora possa ser útil para scripts rápidos ou código legado, as boas práticas modernas de PHP recomendam limitar seu uso para evitar acoplamento rígido e problemas de manutenibilidade. Para uma arquitetura melhor, considere passar variáveis como parâmetros, usar injeção de dependência ou aproveitar o array superglobal $GLOBALS.

Para se aprofundar, leia sobre escopo de variáveis em PHP, a palavra-chave static para variáveis que persistem entre chamadas, e variáveis PHP em geral.

Prática

Prática
O que é verdade sobre o escopo de variáveis em PHP, com base no conteúdo da URL especificada?
O que é verdade sobre o escopo de variáveis em PHP, com base no conteúdo da URL especificada?
Was this page helpful?