Làm việc với một lớp thư viện PHP, và tôi muốn để bọc tất cả các chức năng công cộng của nó trong một lớp con ... Một cái gì đó dọc theo dòng:PHP: Quấn tất cả các chức năng của một lớp trong một lớp con
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
}
}
Đun sôi nó xuống, tôi không muốn phải ghi đè lên mọi phương thức siêu lớp với cùng mã bao bọc, nếu có một cách [hơi thanh lịch/sạch] để làm tất cả ở một nơi.
Điều này có khả thi không? Tôi nghi ngờ tôi đang ở trong đất Lập trình meta ở đây, và thậm chí không biết nếu PHP cung cấp một con thú như vậy, nhưng figured tôi muốn hỏi ...
Để làm rõ - Chỉ có một số phương pháp từ 'BaseClass' mà bạn muốn ghi đè trong' SubClass', không phải tất cả chúng? –
@ s992, không chính xác - Tôi đang tìm cách áp dụng cùng một mã trình bao bọc cho mọi phương thức trong lớp cơ sở. Có vẻ như phương thức ma thuật __call của PHP sẽ thực hiện công việc với một trình bao bọc proxy, nhờ @meagar! – mtbkrdave
Gotcha, câu hỏi không rõ ràng. Nếu câu trả lời của meagar giúp bạn, bạn nên chấp nhận nó. :) –