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

一般来说,在 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 也会集成该函数。

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至81118366@qq.com举报,一经查实,本站将立刻删除。发布者:简知小编,转载请注明出处:https://www.jianzixun.com/64141.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫

相关推荐

软文友链广告合作联系站长qq81118366