欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

php利用反射實現(xiàn)插件機制的方法

 更新時間:2015年03月14日 10:37:53   作者:work24  
這篇文章主要介紹了php利用反射實現(xiàn)插件機制的方法,涉及php反射機制與插件的實現(xiàn)技巧,需要的朋友可以參考下

本文實例講述了php利用反射實現(xiàn)插件機制的方法。分享給大家供大家參考。具體實現(xiàn)方法如下:

復制代碼 代碼如下:
<?php
/**
 * @name    PHP反射API--利用反射技術(shù)實現(xiàn)的插件系統(tǒng)架構(gòu)
 */  
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程序設(shè)計有所幫助。

相關(guān)文章

最新評論