最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

php利用反射實現插件機制的方法

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

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

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

相關文章

最新評論

山东省| 福建省| 醴陵市| 陕西省| 永顺县| 尉犁县| 松江区| 开江县| 墨玉县| 锡林浩特市| 芦溪县| 石渠县| 阿克陶县| 黄平县| 隆林| 北票市| 霞浦县| 九龙城区| 沂源县| 溧阳市| 阜宁县| 竹山县| 胶南市| 盐池县| 芮城县| 彰化县| 吉隆县| 嘉鱼县| 滨海县| 琼海市| 玉环县| 苍南县| 丰原市| 霍州市| 通江县| 固原市| 武邑县| 化州市| 曲沃县| 鸡东县| 吴川市|