没想到吧,PHP 中在类的外部也可以调用私有方法!

分类:PHP相关 时间:2023-11-07 11:42 浏览:0 评论:0
0

一般来说,在 Class 的外部是无法调用私有方法,这也是 Private 字面的意思,但是一些很特殊很特殊的情况下,如果需要调用,是否可以呢?其实可以使用类的反射来实现

function wpjam_call_method($object, $method, ...$args){
 if(!method_exists($object, $method)){
  return;
 }

 $reflection = new ReflectionMethod(get_class($object), $method);
 $is_public = $reflection->isPublic();

 if($is_public){
  $callback = [$object, $method];
 }else{
  $callback = $reflection->getClosure($object);
 }
 
 return call_user_func_array($callback, $args);
}

简单解释一下,首先还是简单判断该方法是否存在,接着获取对象方法的放射,然后判断一下是不是公共的方法,如果是公共就正常调用,不是则获取其闭包,最后使用回调的方式来调用

这个函数可以让你调用对象的私有或者受保护方法,建议一些特殊的情况下才使用为了方便大家调用,新版的 WPJAM Basic 也会集成该函数


生成海报 分享 打赏作者
1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. PHP相关 > 没想到吧,PHP 中在类的外部也可以调用私有方法!

用户评论