源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

php利用反射实现插件机制的方法

  • 时间:2022-02-15 15:13 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:php利用反射实现插件机制的方法
本文实例讲述了php利用反射实现插件机制的方法。分享给大家供大家参考。具体实现方法如下:
[u]复制代码[/u] 代码如下:
<?php /**  * @name    PHP反射API--利用反射技术实现的插件系统架构  */   interface Iplugin{       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程序设计有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部