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: blueNestes 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
globalsó 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. globalnão faz nada para constantes ou variáveisstatic— é exclusivamente para variáveis comuns de escopo global.- Dependências ocultas. Uma função que depende do
globalpode 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
globalforneç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$GLOBALSquando 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.