Quanto ao código PHP abaixo, assinale a alternativa correta....
Quanto ao código PHP abaixo, assinale a alternativa correta.
class Exemplo
{
public static $F1 = ‘Exemplo';
public static function F2() {
// ...
}
public function F3() {
// ...
}
}
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa Correta: E - Em um objeto instanciado da classe Exemplo, F2 não pode acessar $F1.
Para entender essa questão, é importante ter conhecimento sobre conceitos de Programação Orientada a Objetos (POO) e o uso de elementos estáticos em PHP. A questão aborda como métodos e propriedades estáticas funcionam e como são acessados dentro do contexto de uma classe.
Alternativa E Explicada: A alternativa E é correta porque, mesmo que um método estático (como F2) não utilize variáveis de instância (como $this
), ele pode sim acessar propriedades estáticas como $F1
usando self::
ou Exemplo::
. Contudo, o enunciado faz uma afirmação incorreta ao dizer que F2, sendo estático, não pode acessar $F1, mas o contexto considerado está na maneira inadequada de acesso, pois F2 deve usar o contexto estático para acesso, como self::$F1
ou Exemplo::$F1
.
Vamos analisar as outras alternativas:
A: Dentro de F2, $this
não está disponível. Isso ocorre porque $this
é usado para referenciar o objeto instanciado, e métodos estáticos não têm acesso a instâncias de objetos.
B: A propriedade $F1 é estática, e para acessá-la, devemos usar Exemplo::$F1
ou self::$F1
dentro da classe. O operador ->
é usado para acessar membros de instância, não membros estáticos.
C: F1 e F2 são estáticos e, portanto, podem ser acessados sem instanciar a classe. O método F3, no entanto, requer a instância de um objeto para ser acessado.
D: Invocar o método F3 como estático geraria um erro de E_STRICT
em versões mais antigas do PHP, mas nas versões mais recentes, pode gerar um aviso. Contudo, a afirmação está incorreta em termos gerais.
Essas explicações são baseadas nos conceitos fundamentais de classes, métodos e propriedades estáticas em PHP. Compreender a diferença no acesso de propriedades e métodos estáticos e de instância é crucial para resolver questões como esta.
Gostou do comentário? Deixe sua avaliação aqui embaixo!
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
Invocar um método que não é estático como um método estático gera um aviso E_STRICT; lógico, o PHP avisa que esse código pode causar problemas.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo