代码如下:
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程序设计有所帮助。
http://www.bkjia.com/phpjc/969331.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/969331.htmltecharticlephp利用反射实现插件机制的方法 本文实例讲述了php利用反射实现插件机制的方法。分享给大家供大家参考。具体实现方法如下: 代码如下...
