Analise o código PHP abaixo, no qual três linhas foram omitidas do trecho tracejado. <!DOCTYPE html> <html> <body> <?php class 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 trecho Time: Flamengo Cor: Red as linhas omitidas são:
- A)$t = new Time(); $t->set_n('Flamengo'); $t->set_c('Red');
Correta: instancia o objeto com `new Time()` e chama os métodos com `->`, preenchendo os valores que depois serão exibidos.
- B)$t = new Time; $t = set_n('Flamengo'); $t = set_c('Red');
Errada: falta o `->` nas chamadas de método e ainda atribui o resultado de `set_n()` e `set_c()` a `$t`, o que não faz sentido aqui.
- C)$t = new Time(); $t := set_n('Flamengo'); $t := set_c('Red');
Errada: `:=` não é operador válido em PHP para esse caso, então a sintaxe está incorreta.
- D)$tset_n('Flamengo'); $t->set_c('Red');
Errada: `<-new Time` não é sintaxe válida em PHP, além de manter o problema de acesso ao objeto se a criação não ocorrer corretamente.
- E)$t = new Time(); $t.set_n('Flamengo'); $t.set_c('Red');
Errada: em PHP, método de objeto não é chamado com ponto, e sim com `->`; logo a sintaxe está incorreta.
Gabarito: A
Em PHP, para criar um objeto de uma classe, voce usa a palavra-chave `new`, normalmente com parênteses: `new Time();`. Depois disso, para chamar métodos de instância, o acesso é feito com `->`, como em `$t->set_n('Flamengo');`. Esse detalhe é o coração da questão: primeiro cria-se o objeto, depois se alimentam seus atributos por meio dos métodos da classe. No código, a classe `Time` possui métodos `set_n()` e `set_c()` para gravar valores e `get_n()` e `get_c()` para recuperá-los. Assim, para que a página mostre `Time: Flamengo` e `Cor: Red`, o objeto precisa ser instanciado e, em seguida, receber esses dois valores antes dos `echo`. A alternativa A faz exatamente isso: `$t = new Time();`, depois `$t->set_n('Flamengo');` e `$t->set_c('Red');`. Quando os métodos `get_n()` e `get_c()` forem chamados, eles devolvem o que foi armazenado nos atributos do objeto. Simples, direto e sem magia de carnaval no PHP. As outras opções quebram a sintaxe da linguagem: usam `=` no lugar de `->`, tentam chamar método sem objeto, ou usam operadores inexistentes. Em prova, a FGV costuma cobrar justamente essa combinação básica de orientação a objetos com sintaxe correta da linguagem.