一般来说 , 在 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); }【没想到吧,PHP 中在类的外部也可以调用私有方法!】简单解释一下,首先还是简单判断对象该方法是否存在,接着获取对象方法的反射,然后判断一下是不是公共的方法,如果是公共就正常调用,不是则获取该方法的闭包,最后使用回调的方式来调用 。
这个函数可以让你调用对象的私有或者受保护方法 , 建议只在一些很特殊的情况下才使用,为了方便大家调用,新版的 WPJAM Basic 也会集成该函数 。
- 没想到!用这3个软件,网页文字转语音播报并不难
- 很想进行虚拟直播?那就看看这份教程吧
- ?女朋友喜欢去酒吧怎么办,女朋友经常出去KTV酒吧
- 衡山路酒吧一条街 衡山路酒吧
- 长春休闲吧 长春休闲
- 长治新天地网吧在哪 长治新天地网
- ?张雨绮李柄熹被曝恋情,网友表示一把年纪了就算了吧!
- ?姜潮和麦迪娜两人的恋情是怎么开始的?一起来揭秘一下吧!
- 《奔跑吧兄弟》节目特色有哪些
- 10个生活小妙招,对付小毛病特别管用,收藏吧