pracy z klasy biblioteki PHP, i chciałbym, aby owinąć wszystkich swoich funkcji publicznych w podklasie ... coś wzdłuż linii:PHP: Wrap wszystkie funkcje klasy w podklasie
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
}
}
Gotując, wolałbym nie nadpisywać każdej metody nadklasy tym samym kodem opakowania, jeśli istnieje [nieco elegancki/czysty] sposób na zrobienie tego wszystkiego w jednym miejscu.
Czy to możliwe? Podejrzewam, że jestem w METAPROGRAMOWANIE ziemi tutaj, i nawet nie wiem, czy PHP oferuje taką bestię, ale pomyślałam, pytam ...
Aby wyjaśnić - istnieją tylko niektóre metody z "BaseClass", które chcesz zastąpić w "SubClass", nie wszystkie z nich? –
@ s992, niezupełnie - szukałem sposobu na zastosowanie tego samego kodu opakowania do każdej metody w klasie bazowej. Wygląda na to, że metoda PHP __call zrobi to za pomocą opakowania proxy, dzięki @meagar! – mtbkrdave
Mam cię, pytanie nie było dokładnie jasne. Jeśli odpowiedź meagara ci pomogła, powinieneś to zaakceptować. :) –