没有合适的资源?快使用搜索试试~ 我知道了~
本文实例讲述了php利用反射实现插件机制的方法。分享给大家供大家参考。具体实现方法如下: 复制代码 代码如下:<?php /** * @name PHP反射API–利用反射技术实现的插件系统架构 */ interface Iplugin{ public static function getName(); } function findPlugins(){ $plugins = array(); foreach (get_declared_classes() as $class){ $reflectio
资源详情
资源评论
资源推荐
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);
weixin_38686399
- 粉丝: 9
- 资源: 934
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0