O escopo, ou contexto, numa linguagem de programação refere-se ao local em que uma variável ou método foi definido, sendo este também o local onde ela pode ser invocada.
O local em que uma variável é definida pode ser uma função, classe ou enumerador, por exemplo. Em PHP, a regra geral é: a variável só permanece acessível dentro do próprio escopo onde foi declarada. Sendo assim, uma função não pode acessar a variável de outra função. Observe o código abaixo:
$nota_aprovado = 75 ; // fora de escopo
function esta_aprovado ( $bim_1 , $bim_2 , $bim_3 , $bim_4 ) {
// escopo da função
$nota_total = $bim_1 + $bim_2 + $bim_3 + $bim_4 ;
if ( $nota_total >= $nota_aprovado ) {
return true ;
} else {
return false ;
}
}
No código acima, note que a variável $nota_aprovado
foi declarada fora da função e está sendo usada dentro da função esta_aprovado ( )
. Esse código resultará em erro porque ele está tentando usar uma variável que não foi declarada dentro do mesmo escopo. A variável $nota_aprovado
está inacessível para a função esta_aprovado ( )
. Entendeu?
Com esse exemplo em mente, fica fácil continuar a explicação sobre escopos.
Em PHP, existem 2 tipos de escopo: local e global. Por padrão, todas as variáveis em PHP são locais. Isso significa que elas se tornam inacessíveis dentro de outros escopos, como você pôde ver no exemplo anterior.
Mas, o que realmente altera um escopo no PHP? O escopo em PHP é alterado em namespaces, classes, enumeradores e funções. Os comandos if...else , do...while , for , try...catch
e outros não alteram o escopo. Isso quer dizer que variáveis declaradas antes desses comandos continuam acessíves dentro de seus escopos.
E se você realmente precisar usar a variável fora do seu escopo? O artigo Como utilizar variáveis que estão fora do escopo de uma função? explica como fazer isso. Clique no link para aprender mais sobre escopos em PHP.
E uma última observação a se fazer: os comandos include
e require
também não alteram o escopo. Isso é útil quando tiver de carregar um novo script com as variáveis anteriores.
Conclusão
Escopos podem dar muita dor de cabeça quando as regras não são conhecidas. É essencial ter bastante organização ao planejar um projeto e criar seu código levando as regras dos escopos em consideração.
Tenho certeza de que, agora que você entende como os escopos em PHP funcionam, você será capaz de criar seus projetos com muito menos erros 😁.