php – 如何创建一个每次调用公共方法时调用的方法?
发布时间:2020-12-13 16:17:09 所属栏目:PHP教程 来源:网络整理
导读:如何创建一个每次调用公共方法时调用的方法?你也可以说这是一个post-method-call-hook. 我目前的代码: ?phpclass Name { public function foo() { echo "Foo calledn"; } public function bar() { echo "Bar calledn"; } protected function baz() { ech
如何创建一个每次调用公共方法时调用的方法?你也可以说这是一个post-method-call-hook.
我目前的代码: <?php class Name { public function foo() { echo "Foo calledn"; } public function bar() { echo "Bar calledn"; } protected function baz() { echo "Baz calledn"; } } $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 calledn"; } 但这并不能真正解决我的问题,因为那不是真正的正交,如果我有100个方法需要在它们之前调用另一个方法,那么实现起来相对痛苦. 解决方法
可能不是你期望或想要的完全,但通过使用魔术方法__call并标记受保护或私有的公共方法,您可以获得所需的效果:
<?php 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 calledn"; } protected function bar() { echo "Bar calledn"; } protected function baz() { echo "Baz calledn"; } } $name = new Name(); $name->foo(); $name->bar(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |