加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP编程:php利用反射实现插件机制的方法

发布时间:2020-12-13 02:28:36 所属栏目:PHP教程 来源:网络整理
导读:《php利用反射实现插件机制的方法》要点: 本文介绍了php利用反射实现插件机制的方法,希望对您有用。如果有疑问,可以联系我们。 本篇章节讲解php利用反射实现插件机制的办法.供大家参考研究.具体实现办法如下: PHP编程 代码如下: ?php /** ?* @na

《php利用反射实现插件机制的方法》要点:
本文介绍了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为您提供精彩教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读