PHP的魔术方法__call在子类上

我的情况最好用一些代码描述: class Foo { function bar () { echo called Foo::bar(); }}class SubFoo extends Foo { function __call($func) { if ($func == bar) { echo inte

我的情况最好用一些代码描述:

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(),所以你写的例子是不可能的.

作者: dawei

【声明】:永州站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

为您推荐

联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部