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
Tema Central da Questão: Esta questão aborda o conceito de membros estáticos e membros de instância em PHP, que é um aspecto fundamental da programação orientada a objetos na linguagem. Compreender como se dá o acesso a propriedades e métodos estáticos e não estáticos é crucial para resolver esta questão.
Resumo Teórico:
Em PHP, uma propriedade ou método estático pode ser acessado sem a necessidade de instanciar a classe. Isso é feito através do operador de resolução de escopo ::
. Por outro lado, métodos e propriedades não estáticos requerem a criação de um objeto da classe para que possam ser acessados, utilizando o operador ->
.
Propriedades e métodos estáticos são declarados com a palavra-chave static
. Dentro de métodos estáticos, a pseudo-variável $this
, que referencia a instância atual, não está disponível.
Alternativa Correta: A alternativa E - "Em um objeto instanciado da classe Exemplo, F2 não pode acessar $F1."
Justificativa: Embora a propriedade $F1
seja estática e possa ser acessada por métodos estáticos da classe, a estrutura da questão menciona que em um objeto instanciado, o método estático F2
não tem acesso direto a essa propriedade da forma como um método de instância teria. O método F2
precisa usar a classe diretamente, através de Exemplo::$F1
, para acessar a propriedade estática.
Análise das Alternativas Incorretas:
A - "Dentro de F2, $this está disponível."
Erro: $this
não está disponível dentro de métodos estáticos, pois eles não estão associados a uma instância específica da classe.
B - "A propriedade $F1 está acessível a objeto usando o operador -> (seta)."
Erro: Propriedades estáticas não são acessíveis através de objetos com o operador ->
. Elas devem ser acessadas usando o operador ::
.
C - "Não são acessíveis antes de se instanciar a classe: F1, F2 e F3."
Erro: Como $F1
e F2
são estáticos, eles são acessíveis sem instanciar a classe.
D - "Invocar o método F3 como estático suscita um aviso de nível E_STRICT."
Erro: Embora em versões mais novas do PHP seja desencorajado, não gerará um aviso E_STRICT, pois essa categoria de erro foi descontinuada em versões mais recentes.
Estratégias para Interpretação: Ao lidar com questões envolvendo propriedades e métodos estáticos, lembre-se das regras de acesso e da natureza de cada tipo, verificando sempre como o PHP os trata em termos de escopo e associação com a classe ou instância.
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