de trabajo con una clase de librería PHP, y me gustaría para envolver la totalidad de sus funciones públicas en una subclase ... Algo a lo largo de las líneas de:PHP: Wrap todas las funciones de una clase en una subclase
class BaseClass
{
function do_something()
{
some;
stuff;
}
function do_something_else()
{
other;
stuff;
}
/*
* 20-or-so other functions here!
*/
}
class SubClass extends BaseClass
{
function magicalOverrideEveryone()
{
stuff-to-do-before; // i.e. Display header
call_original_function(); // i.e. Display otherwise-undecorated content
stuff-to-do-after; // i.e. Display footer
}
}
Al reducirlo, prefiero no tener que anular todos los métodos de superclase con el mismo código de contenedor, si hay una forma [algo elegante/limpia] de hacerlo todo en un solo lugar.
¿Esto es posible? Sospecho que estoy en tierra metaprogramming aquí, y ni siquiera sé si PHP ofrece una bestia, pero pensé que le pediría ...
Para aclarar: hay solo algunos métodos de 'BaseClass' que desea anular en' SubClass', ¿no en todos ellos? –
@ s992, no exactamente - Estaba buscando una forma de aplicar el mismo código contenedor a todos los métodos en la clase base. Parece que el método mágico de __call de PHP hará el trabajo con un contenedor de proxy, gracias @meagar! – mtbkrdave
Gotcha, la pregunta no era exactamente clara. Si la respuesta de Meagar te ayudó, deberías aceptarlo. :) –