[英]Automatically invoke __call of parent class when invoking public child method?
我有以下代碼:
class A
{
public function __call($method, $args)
{
echo 'Hello';
}
}
class B extends A
{
public function test()
{
echo 'Hello world';
}
}
$b = new B();
b->test(); //outputs 'Hello world';
現在,當調用test()時,輸出為:Hello world。 但是我希望它首先回應:Hello world和我想要回應:父類的Hello,而沒有聲明A類中的測試方法。
我該如何解決這個問題?
編輯:
對不起,也許我不夠清楚,抱歉我的英語不好我來自荷蘭,我想要的是當一個孩子的方法被調用,父類得到被調用的孩子的方法的名稱。
__call是一個重載函數。 當沒有定義公共函數時將要調用的含義!
所以要打招呼只調用任何其他未定義的函數
$b = new B();
b->notAFunction();
只會給你打招呼。
你可以這樣調用parent::test()
:
class B extends A {
public function test()
{
echo 'Hello world';
parent::test();
}
}
產出:
Hello WorldHello
您可以重命名__call以測試並在子測試開始時調用parent :: test()。
沒有辦法自動化這個。
還要指出,如果使用兩個下划線命名__call,則訪問修飾符應為私有,_call為protected。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.