Como chamar o método grandparent sem obter erro E_STRICT?
Às vezes eu preciso executar o método grandparent (isto é, ignorar o método pai), eu sei que isso é cheiro de código, mas às vezes eu não posso mudar as outras classes (frameworks, bibliotecas, etc).
No PHP podemos fazer isso com algo como:
call_user_func(array(get_parent_class(get_parent_class($childObject)), 'grandParentMethod'));
O problema é que, se você tiver erros E_STRICT habilitados, você receberá um erro como:
Padrões estritos: método não estático GrandParent :: grandParentMethod () não deve ser chamado estaticamente em ...
Eu encontrei apenas uma solução para isso (sem remover E_STRICT), e é só adicionar o@
para suprimir o erro.
Mas isso é realmente feio, alguém conhece uma solução melhor?
Obrigado ! PS: não consigo instanciar um novo objeto como:
$grandparent = get_parent_class(get_parent_class($son));
$gp= new $grandparent;
$gp->grandParentMethod
porque eu preciso chamar o método dos meus avós no contexto de $ son.