Pular para o conteúdo principal

Questão de Programação — PHP — FGV 2023

ProgramaçãoPHP
Código
fg063630
Banca
FGV
Órgão
DPE-RS
Ano
2023
Nível
Superior
Cargo
Analista - Área de Apoio Especializado - Tecnologia da Informação - Desenvolvimento de Sistemas
Analise o código PHP abaixo, no qual três linhas foram omitidas do trecho tracejado.<!DOCTYPE html><html><body><?phpclass Time {public $x;public $y;function set_n($x) {$this->n = $x;}function get_n() {return $this->n;}function set_c($c) {$this->c = $c;}function get_c() {return $this->c;}}- - - - - - - - - - - - - -echo "Time: " . $t->get_n();echo "<br>";echo "Cor: " . $t->get_c();?></body></html>Dado que essa página exibe o trechoTime: FlamengoCor: Redas linhas omitidas são:
  1. A$t = new Time();$t->set_n('Flamengo');$t->set_c('Red');
  2. B$t = new Time;$t = set_n('Flamengo');$t = set_c('Red');
  3. C$t = new Time();$t := set_n('Flamengo');$t := set_c('Red');
  4. D$t<-new Time;$t->set_n('Flamengo');$t->set_c('Red');
  5. E$t = new Time();$t.set_n('Flamengo');$t.set_c('Red');
Revelar gabarito e comentário

GabaritoA — $t = new Time(); $t->set_n('Flamengo'); $t->set_c('Red');

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

PHP – Sintaxe de Objetos

Gabarito: letra A. Para que o código funcione conforme a saída "Time: Flamengo" e "Cor: Red", as linhas omitidas devem instanciar a classe Time com new e chamar os métodos set_n e set_c usando o operador ->. A única alternativa que emprega essa sintaxe corretamente é a letra A.

A questão testa o conhecimento da sintaxe básica de orientação a objetos em PHP: criação de objetos com new e invocação de métodos com -> (seta). É comum que candidatos confundam com outras linguagens (JavaScript usa ponto, por exemplo).

NÃO CAIA NESSA!

A banca explora a troca do operador -> (seta) por outros símbolos: . (ponto) na alternativa E, como em JavaScript ou Python; := na alternativa C; <- na alternativa D. Além disso, na alternativa B, o método é chamado como se fosse uma função comum (atribuição direta). Lembre-se: em PHP, métodos de objeto SEMPRE usam $objeto->metodo().

Alternativa A — ✅ Correta ⟵ GABARITO

$t = new Time(); cria um novo objeto da classe Time. $t->set_n('Flamengo') e $t->set_c('Red') chamam os métodos da instância corretamente. Esta é a sintaxe padrão do PHP.

Alternativa B — ❌ Incorreta

A primeira linha $t = new Time; é válida (parênteses são opcionais quando não há argumentos), mas as duas linhas seguintes estão erradas: $t = set_n('Flamengo'); trata set_n como uma função independente e sobrescreve $t com o retorno (que seria null, pois a função não existe). O correto seria $t->set_n('Flamengo').

Alternativa C — ❌ Incorreta

O operador := não existe em PHP. Para chamar um método, usa-se ->. Portanto, $t := set_n('Flamengo') é inválido.

Alternativa D — ❌ Incorreta

$t<-new Time; usa <-, que não é operador em PHP. A instanciação deve ser $t = new Time; ou $t = new Time();.

Alternativa E — ❌ Incorreta

O ponto . em PHP é o operador de concatenação de strings, não de chamada de método. $t.set_n('Flamengo') tenta concatenar o objeto com o resultado da função, o que é inválido. Métodos são chamados com ->.

Gabarito: letra A.

Link permanente: /questoes/fg063630