Questão de Programação — Python — Quadrix 2024
- Código
- qg354246
- Banca
- Quadrix
- Órgão
- IBICT
- Ano
- 2024
- Nível
- Superior
- Cargo
- Tecnologista - Tecnologia da Informação
- CCerto
- EErrado
GabaritoE — Errado
Gabarito: ERRADO. A palavra-chave instanceof em PHP é um operador de verificação de tipo, usado para testar se um objeto é uma instância de uma determinada classe, ou se implementa uma interface — e não tem absolutamente nada a ver com avaliar strings como código PHP. A função que avalia uma string como código PHP é a eval(), e é essa confusão que a banca explora no item.
O instanceof é um operador binário do PHP, presente desde a versão 5, que responde à pergunta "este objeto é uma instância desta classe?" (ou de uma subclasse, ou de uma classe que implementa determinada interface). Ele retorna true ou false e é amplamente utilizado em código orientado a objetos para verificação de tipo antes de realizar operações específicas. Por exemplo, em um sistema com uma hierarquia de classes Animal, Cachorro e Gato, você pode usar $animal instanceof Cachorro para saber se a variável $animal aponta para um objeto da classe Cachorro.
A função que realmente avalia uma string como código PHP é a eval(). Ela recebe uma string contendo código PHP válido e o executa como se fosse parte do script. É uma função perigosa, pois permite a execução de código arbitrário, e seu uso é desaconselhado em aplicações reais por questões de segurança. A confusão entre instanceof e eval() é uma pegadinha clássica em provas de programação, pois ambas são palavras-chave/funções do PHP, mas com propósitos completamente distintos.
Para fixar: instanceof é um operador de tipo (verificação de herança/interface), enquanto eval() é uma função que executa código dinamicamente. A banca trocou a função de um pelo outro, criando uma afirmação falsa. O candidato que conhece a função real de instanceof identifica o erro imediatamente.
A banca troca a função do operador instanceof pela função da função eval(). O candidato que sabe que instanceof verifica tipo (herança/interface) e que eval() executa código a partir de string não cai nessa. Guarde o par: instanceof = verificação de tipo; eval() = execução de código.
A afirmação diz que instanceof tem como função avaliar a string fornecida no parâmetro code como um código PHP. Isso é falso. O instanceof é um operador de verificação de tipo, que testa se um objeto é instância de uma classe específica, de uma subclasse ou de uma classe que implementa uma interface. A função que avalia uma string como código PHP é a eval(), que recebe uma string e a executa como código PHP. Portanto, o item está errado.
Gabarito: ERRADO
Link permanente: /questoes/qg354246