【发布时间】:2009-10-08 01:40:55
【问题描述】:
我的情况最好用一点代码来描述:
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 中可行吗?
【问题讨论】:
标签: php oop magic-methods