¿Cómo llamar al método abuelo sin obtener un error E_STRICT?
A veces necesito ejecutar el método de abuelo (es decir, omitir el método principal), sé que esto es el olor del código, pero a veces no puedo cambiar las otras clases (marcos, bibliotecas, etc.).
En PHP podemos hacer eso con algo como:
call_user_func(array(get_parent_class(get_parent_class($childObject)), 'grandParentMethod'));
El problema es que si tiene habilitados los errores E_STRICT obtendrá un error como:
Normas estrictas: el método no estático GrandParent :: grandParentMethod () no debe llamarse estáticamente en ...
He encontrado una sola solución para esto (sin eliminar E_STRICT), y solo está agregando el@
para suprimir el error.
Pero eso es realmente feo, ¿alguien sabe una mejor solución?
Gracias ! PD: no puedo crear una instancia de un nuevo objeto como:
$grandparent = get_parent_class(get_parent_class($son));
$gp= new $grandparent;
$gp->grandParentMethod
porque necesito llamar al método de mi abuelo en el contexto de $ son.