php 公用方法,php – 如何创建一个每次调用公共方法时调用的方法?

如何创建一个每次调用公共方法时调用的方法?你也可以说这是一个post-method-call-hook.

我目前的代码:

class Name {

public function foo() {

echo "Foo called\n";

}

public function bar() {

echo "Bar called\n";

}

protected function baz() {

echo "Baz called\n";

}

}

$name = new Name();

$name->foo();

$name->bar();

此代码中的当前输出将是:

Foo called

Bar called

我想每次调用另一个公共方法时调用baz()方法.例如.

Baz called

Foo called

Baz called

Bar called

我知道我可以这样做:

public function foo() {

$this->baz();

echo "Foo called\n";

}

但这并不能真正解决我的问题,因为那不是真正的正交,如果我有100个方法需要在它们之前调用另一个方法,那么实现起来相对痛苦.

最佳答案 可能不是你期望或想要的完全,但通过使用魔术方法__call并标记受保护或私有的公共方法,您可以获得所需的效果:

class Name {

public function __call($method, $params) {

if(!in_array($method, array('foo', 'bar')))

return;

$this->baz();

return call_user_func_array(

array($this, $method), $params);

}

protected function foo() {

echo "Foo called\n";

}

protected function bar() {

echo "Bar called\n";

}

protected function baz() {

echo "Baz called\n";

}

}

$name = new Name();

$name->foo();

$name->bar();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值