[英]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.