辛星 php,跟着辛星用PHP的反射机制来实现插件

我的博文的前一篇讲解了PHP的反射机制是怎么回事,如果读者还不清楚反射机制,可以搜索下或者看我的博文,都是不错的选择,我们开始讲解一下怎么用PHP来实现插件机制。所谓插件机制,就是我们定义一个接口,即我们定义一个interface,然后第三方插件就去实现这个interface,然后我们拿到了这个插件之后,去调用这个插件的功能,我们可以不知道这些插件的类名等信息,我们接下来就用反射机制去实现这个功能。

由于我只是简单的示例,所以我写的代码并不长,而且很简单,所以,大家既然理解了上面的步骤,那么就可以直接看源代码了,其中的注释还是蛮清楚的,如果读者有什么不清楚的,可以告诉我,我会认真回复的。

implementsInterface('Ixin')){$plugin[] = $reclass;}}return $plugin;}/***我们去调用该插件的msg方法*/function myexec(){$arr = find();foreach (find() as $plugin) {//判断该插件是否有方法msgif($plugin->hasMethod('msg')){//得到这个方法类的一个实例$remethod = $plugin->getMethod('msg');//如果它是静态方法,则直接调用即可if($remethod->isStatic()){$remethod->invoke(null);}else{//先声明插件类的一个实例,然后调用它$pluins = $plugin->newInstance();$remethod->invoke($pluins);}}}}/***我们只需要调用这一个函数就可以了*它自动搜索所有的插件,并且执行插件的msg函数*/myexec();

我还是分析一下吧,接口Ixin是我们定义的接口,而类Xin是第三方的插件,我们用find自动搜索了所有定义的类,然后我们判断这些类里面谁继承自Ixin,并且实现了msg方法,我们拿到了这个列表自后,就可以用myexec方法去调用它们了。

思路清晰吗?清晰请打1.。。。O(∩_∩)O~

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值