class a{
function mycall($var){
return 'hello:'.$var;
}
}
//invoke
$aobj = new a();
echo $aobj->mycall('abc');
想实现不修改现有调用流程代码的情况下,实现,对已定义类方法(这里是'mycall')的事件监听 比如拦截和修改mycall的返回。
我知道可以通过包装类的类似的方法来解决问题,但如果不想修改现有调用流程,仅仅在这些类定义之前或之后添加代码来解决问题呢? 补充一下,系统环境还是5.3的,所以traits就暂时用不了了,有没有什么变通的办法?
这样试一下
trait T {
private function mycall($var){
return 'hello:'.str_pad($var, 4, '__', STR_PAD_LEFT);
}
}
//invoke
class A{
use T {
mycall as traitmycall;
}
public function mycall($val)
{
return $this->traitmycall($val);
}
}
$obj = new A();
echo $obj->mycall('abc');
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。