Questão nº 31
Questão de Tecnologia da Informação · FGV TJ-MS 2024 (nº 31)
Murilo, analista de sistemas, escreveu um código em PHP, que incluía o trecho a seguir:
Linha 1: $x = -1;
Linha 2: function funcao($y, $z) {
Linha 3:
Linha 4: $retorno = $x*$y + 3*$z;
Linha 5:
Linha 6: return $retorno;
Linha 7: }
Linha 8:
Linha 9: echo funcao(3,5);
Ele pretendia que, ao executá-lo, fosse exibido o valor 12. Para isso, Murilo alterou uma linha do código.
A linha alterada ficou da seguinte maneira:
- ALinha 3: var $x;
- BLinha 3: global $x; (alternativa correta)
- CLinha 1: var $x = -1;
- DLinha 1: global $x = -1;
- ELinha 3: global $x = -1.
Resposta comentada
Gabarito Alternativa B
Em PHP, as variáveis têm um escopo, que é a região do código onde elas podem ser acessadas. Variáveis definidas fora de qualquer função são globais, mas não são automaticamente visíveis dentro de uma função; para usá-las dentro de uma função, é preciso declará-las explicitamente como globais dentro dessa função.
(A) Incorreta: var $x; dentro da função criaria uma nova variável local chamada $x, inicializada como null. O var é um modificador de visibilidade para propriedades de classe, não para variáveis locais ou globais em funções. Armadilha: A presença da palavra var pode sugerir uma manipulação de variável, mas seu uso aqui está incorreto para o propósito de acessar uma variável global, criando uma variável local sem valor útil para o cálculo. O resultado seria null * 3 + 3 * 5 = 15.
(B) Correta: global $x; dentro da função é a forma correta de indicar que a variável $x dentro da função deve se referir à variável global $x que foi definida na Linha 1. Assim, $x terá o valor -1, e o cálculo será (-1) * 3 + 3 * 5 = -3 + 15 = 12.
(C) Incorreta: var $x = -1; na Linha 1 é uma sintaxe obsoleta e incorreta para declarar uma variável global em PHP (o var é usado para propriedades de classe). Mesmo que fosse ignorado e $x se tornasse global, a função ainda não a acessaria por padrão.
(D) Incorreta: global $x = -1; na Linha 1 é uma sintaxe incorreta. O comando global é usado dentro de uma função para importar uma variável global existente, não para declarar uma variável global no escopo principal.
(E) Incorreta: global $x = -1. na Linha 3 é uma sintaxe incorreta. O comando global não permite atribuição de valor diretamente na declaração (global $x; é o correto, sem atribuição). Mesmo que fosse global $x; $x = -1;, o objetivo é acessar o valor existente, não redefini-lo.
Fonte: FGV TJ-MS 2024 Técnico de Nível Superior - Analista de Sistemas (Caderno Tipo 1). Reproduzida para fins de estudo.