本文实例讲述了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教程
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
新闻热点
疑难解答