Escopo de uma variável determina até onde no código essa variável é enxergada, alcançável.
Os locais onde a variável pode ser acessível determinam o escopo da variável.
No PHP, as variáveis têm quatro tipos de escopos:
- Local
- Global
- Static(estático)
- Parâmetros de uma função
Vamos ver cada um desses escopos
Variável com Escopo LOCAL
As variáveis criadas dentro de uma função são acessíveis somente dentro dessa função, então elas são variáveis locais.
O código abaixo gerará erro. O erro ocorre porque a variável echo $nome; não enxerga $nome = ‘Maria’;
<?php
function dadosPessoais(){
$nome = 'Maria'; //variável local
}
echo $nome;
?>
Erro:
Notice: Undefined variable: nome in /var/www/html/meusite/index.php on line 8
Variável com Escopo GLOBAL
São variáveis criadas fora das funções. Isso significa que você pode acessar a variável em qualquer lugar menos dentro de uma função.
<?php
$nome = 'Maria'; //variável global
function dadosPessoais(){
echo $nome; //echo não alcança $nome = 'Maria';
}
dadosPessoais();
?>
Ocorrerá o mesmo erro que ocorreu acima:
Notice: Undefined variable: nome in /var/www/html/meusite/index.php on line 6
echo $nome; não enxerga $nome = ‘Maria’;
O PHP permite acessar uma variável global dentro de uma função usando a palavra-chave global:
<?php
$nome = 'Maria'; //variável global
function dadosPessoais(){
global $nome;
echo $nome;
}
dadosPessoais();
?>
Obs.: Não é uma boa prática usar variáveis globais!
VARIÁVEIS SUPERGLOBAIS
O PHP tem uma lista de variáveis integradas, conhecidas como variáveis superglobais. As variáveis superglobais fornecem informações sobre o ambiente do script PHP.
As variáveis superglobais estão sempre disponíveis em todas as partes do script.
Variáveis Superglobais | Significado |
---|---|
$GLOBALS | Retorna um array que contém variáveis globais. Os nomes das variáveis são usados para selecionar qual parte da matriz acessar. |
$_SERVER | Retorna dados sobre o ambiente do servidor web. |
$_GET | Retornar dados de solicitações GET |
$_POST | Retornar dados de solicitações POST |
$_COOKIE | Retornar dados de cookies HTTP |
$_FILES | Retornar dados de uploads de arquivos POST. |
$_ENV | Retorna informações sobre o ambiente do script. |
$_REQUEST | Retornar dados da solicitação HTTP |
$_SESSION | Variáveis de retorno registradas em uma sessão |
Escopo de Variável Estática(Static)
Uma variável estática só é acessível dentro da função!
Para criar uma variável estática usamos a palavra-chave static. Uma variável estática retém seu valor entre chamadas de função.
<?php
function contador() {
static $contador = 1;
return print $contador++ . "\n";
}
contador();
contador();
contador();
contador();
contador();
?>
Resultado será:
1 2 3 4 5
Mas se fizermos o mesmo código adicionando echo $contador; receberemos o mesmo erro dos chamados acima.
<?php
function contador() {
static $contador = 1;
return print $contador++ . "\n";
}
echo $contador;
contador();
contador();
contador();
contador();
contador();
?>
Erro:
Notice: Undefined variable: contador in /var/www/html/meusite/index.php on line 9
1
2
3
4
5
Escopo de Variável dos Parâmetros de uma Função
Os parâmetros de uma função são locais e enxergadas apenas dentro da função.
<?php
function contador($num) {
$num = 1;
return print $num;
}
echo $num;
?>
echo $num; não pode ser acessada pois é local e com escopo voltado somente para a função.
Nem precisamos printar o erro aqui 🙂
Conclusão
Hoje vimos sobre o escopo das variáveis. Até onde elas são alcançáveis ou enxergadas.
Vimos também sobre variáveis estáticas.