首页后端开发JAVA没想到吧,PHP 中在类的外部也可以调用私有方法!

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

时间2023-04-21 23:06:02发布访客分类JAVA浏览523
导读:一般来说,在 Class 的外部是无法调用私有方法,这也是 Private 字面的意思,但是一些很特殊很特殊的情况下,如果需要调用,是否可以呢?其实可以使用类的反射来实现。function wpjam_call_method($object...

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


声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

php闭包对象反射函数

若转载请注明出处: 没想到吧,PHP 中在类的外部也可以调用私有方法!
本文地址: https://pptw.com/jishu/4789.html
移动适配-vw/wh Activity四种启动模式

游客 回复需填写必要信息