PHP编程:php利用反射实现插件机制的方法
发布时间:2020-12-13 02:28:36 所属栏目:PHP教程 来源:网络整理
导读:《php利用反射实现插件机制的方法》要点: 本文介绍了php利用反射实现插件机制的方法,希望对您有用。如果有疑问,可以联系我们。 本篇章节讲解php利用反射实现插件机制的办法.供大家参考研究.具体实现办法如下: PHP编程 代码如下: ?php /** ?* @na
《php利用反射实现插件机制的方法》要点: 本篇章节讲解php利用反射实现插件机制的办法.分享给大家供大家参考.具体实现办法如下:PHP编程
代码如下:
<?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程序设计有所赞助.PHP编程 《php利用反射实现插件机制的方法》是否对您有启发,欢迎查看更多与《php利用反射实现插件机制的方法》相关教程,学精学透。编程之家 52php.cn为您提供精彩教程。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |