我的情况最好用一些代码描述:
class Foo {
function bar () {
echo "called Foo::bar()";
}
}
class SubFoo extends Foo {
function __call($func) {
if ($func == "bar") {
echo "intercepted bar()!";
}
}
}
$subFoo = new SubFoo();
// what actually happens:
$subFoo->bar(); // "called Foo:bar()"
// what would be nice:
$subFoo->bar(); // "intercepted bar()!"
我知道我可以通过在子类中重新定义bar()(和所有其他相关方法)来实现这一点,但是对于我的目的,如果__call函数可以处理它,这将是很好的.它只是使事情变得更加干净,更易于管理.
这是否可能在PHP?
仅当函数没有被找到时,才调用
__call(),所以你写的例子是不可能的.