首页 > 编程 > PHP > 正文

php如何利用反射实现插件机制

2020-03-22 17:59:46
字体:
来源:转载
供稿:网友
这篇文章主要介绍了php利用反射实现插件机制的方法,涉及php反射机制与插件的实现技巧,需要的朋友可以参考下

本文实例讲述了php利用反射实现插件机制的方法。具体实现方法如下

代码如下:

 ?php * @name PHP反射API--利用反射技术实现的插件系统架构interface Iplugin{  html' target='_blank'>public static function getName(); function findPlugins(){  $plugins = array();  foreach (get_declared_classes() as $class){  $reflectionClass = new ReflectionClass($class);  if ($reflectionClass- implementsInterface( Iplugin )) {  $plugins[] = $reflectionClass;  return $plugins; function computeMenu(){  $menu = array();  foreach (findPlugins() as $plugin){  if ($plugin- hasMethod( getMenuItems )) {  $reflectionMethod = $plugin- getMethod( getMenuItems  if ($reflectionMethod- isStatic()) {  $items = $reflectionMethod- invoke(null);  } else {  $pluginInstance = $plugin- newInstance();  $items = $reflectionMethod- invoke($pluginInstance);  $menu = array_merge($menu,$items);  return $menu; function computeArticles(){  $articles = array();  foreach (findPlugins() as $plugin){  if ($plugin- hasMethod( getArticles )) {  $reflectionMethod = $plugin- getMethod( getArticles  if ($reflectionMethod- isStatic()) {  $items = $reflectionMethod- invoke(null);  } else {  $pluginInstance = $plugin- newInstance();  $items = $reflectionMethod- invoke($pluginInstance);  $articles = array_merge($articles,$items);  return $articles; class MycoolPugin implements Iplugin {  public static function getName(){  return MycoolPlugin  public static function getMenuItems(){  return array(array( description = MycoolPlugin , link = /MyCoolPlugin  public static function getArticles(){  return array(array( path = /MycoolPlugin , title = This is a really cool article , text = xxxxxxxxx )); $menu = computeMenu(); $articles = computeArticles(); print_r($menu); print_r($articles);

总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。

相关推荐:

php实现采集中国代理服务器

php变量的判定与动态定义

PHP实现简单的GET、POST、Cookie、Session等功能

以上就是php如何利用反射实现插件机制的详细内容,PHP教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表