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.

questionAnswers(3)

yourAnswerToTheQuestion