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

PHP反射API示例分享

 更新時間:2016年10月08日 10:08:55   作者:x_liang  
這篇文章主要為大家分享了PHP反射API示例,利用反射技術實現(xiàn)的插件系統(tǒng)架構,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了 PHP反射API--利用反射技術實現(xiàn)的插件系統(tǒng)架構,供大家參考,具體內(nèi)容如下

<?php
/**
 * @name  PHP反射API--利用反射技術實現(xiàn)的插件系統(tǒng)架構
 */


/**
 * 先調(diào)用findPlugins方法獲取到獲取到實現(xiàn)了接口的類
 * 然后調(diào)用反射類的方法
 * @param $method  方法名
 * @param $interfaceName  接口名
 * @return array  方法名對應的返回結(jié)果
 */
function compute($method,$interfaceName){
  $findPlugins = findPlugins($interfaceName);
  $menu = array();
  foreach ($findPlugins as $plugin){   //這里獲取到實現(xiàn)Iplugin接口的所有的類
    if ($plugin->hasMethod($method)) {    //檢查在類中特定的方法是否被定義。
      $reflectionMethod = $plugin->getMethod($method);   //獲取類中的方法
      if ($reflectionMethod->isStatic()) {    //判斷其方法是否為靜態(tài)方法
        $items = $reflectionMethod->invoke(null);
      } else {
        $pluginInstance = $plugin->newInstance();  //創(chuàng)建類的新實例。給定參數(shù)傳遞給類構造函數(shù)。
        $items = $reflectionMethod->invoke($pluginInstance);
      }
      $menu = array_merge($menu, is_array($items)?$items:[$items]);
    }
  }
  return $menu;
}

/**
 * 首先從一堆已定義的類中找到實現(xiàn)Iplugin接口的類
 * 然后將其存放在數(shù)組中 return
 * @param string      $interfaceName
 * @return array      $plugins
 */
function findPlugins($interfaceName){
  $plugins = array();
  //返回由已定義類的名字所組成的數(shù)組
  foreach (get_declared_classes() as $class){
    $reflectionClass = new ReflectionClass($class);//獲得class的反射對象,包括私有的屬性方法
    if ($reflectionClass->implementsInterface($interfaceName)) {   //檢查它是否實現(xiàn)了Iplugin接口
      $plugins[] = $reflectionClass;   //找到需要反射的類
    }
  }
  return $plugins;
}
interface Iplugin{
  public static function getName();  //定義接口和靜態(tài)方法
}
//實現(xiàn)Iplugin接口
class MycoolPugin implements Iplugin {
  public static function getName(){
    return 'MycoolPlugin';
  }
  public 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 = compute('getMenuItems','Iplugin');
$articles  = compute('getArticles','Iplugin');
print_r($menu);
echo "<hr>";
print_r($articles);
echo "<hr>";
$name = compute('getName','Iplugin');
print_r($name);

/*
  new class和new ReflectionClass的區(qū)別是什么
  1、new $class() 實例化class對象
  2、new ReflectionClass($class) 獲得class的反射對象(包含了元數(shù)據(jù)信息)
  區(qū)別:
  1、new出來的class,你不能訪問他的私有屬性/方法,但反射可以。
  2、反射返回的對象是class的元數(shù)據(jù)對象(包含class的所有屬性/方法的元數(shù)據(jù)信息),但不是類本身;類似于查到了類的戶口檔案,但戶口檔案不是人!
*/

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 使用PHP實現(xiàn)RESTful API的常見問題與解決方案

    使用PHP實現(xiàn)RESTful API的常見問題與解決方案

    RESTful API是一種基于HTTP協(xié)議的架構風格,廣泛應用于現(xiàn)代Web服務和移動應用開發(fā)中,但在開發(fā)過程中開發(fā)者可能會遇到一些常見問題,下面小編為大家提供一下相應問題的解決方案吧
    2025-03-03
  • sourcesafe管理phpproj文件的補充說明(downmoon)

    sourcesafe管理phpproj文件的補充說明(downmoon)

    在使用vs.php+ sourcesafe管理代碼時,發(fā)現(xiàn)有時候并不能從vs.net IDE中正確獲取phpproj文件下的所有文件。但從sourcesafe IDE下卻可以。
    2009-04-04
  • Adnroid 微信內(nèi)置瀏覽器清除緩存

    Adnroid 微信內(nèi)置瀏覽器清除緩存

    本文主要介紹,微信內(nèi)置瀏覽器無法清除緩存的問題.這里整理了一些方法,以供大家學習參考,希望能幫到有需要的小伙伴
    2016-07-07
  • php短信接口代碼

    php短信接口代碼

    這篇文章主要為大家詳細介紹了php短信接口代碼,php短信發(fā)送、php批量發(fā)送、php獲取余額等代碼,感興趣的小伙伴們可以參考一下
    2016-05-05
  • php靜態(tài)文件生成類實例分析

    php靜態(tài)文件生成類實例分析

    這篇文章主要介紹了php靜態(tài)文件生成類,以實例形式較為詳細的分析了使用php生成靜態(tài)文件的方法及使用技巧,需要的朋友可以參考下
    2015-01-01
  • PHP實現(xiàn)通過文本文件統(tǒng)計頁面訪問量功能示例

    PHP實現(xiàn)通過文本文件統(tǒng)計頁面訪問量功能示例

    這篇文章主要介紹了PHP實現(xiàn)通過文本文件統(tǒng)計頁面訪問量功能,涉及php文件讀寫、數(shù)值計算及圖形操作相關實現(xiàn)技巧,需要的朋友可以參考下
    2019-02-02
  • php 靜態(tài)化實現(xiàn)代碼

    php 靜態(tài)化實現(xiàn)代碼

    Replace函數(shù)用于將從模版文件中讀取的內(nèi)容中的關鍵字替換成變量中的內(nèi)容
    2009-03-03
  • 解析php5配置使用pdo

    解析php5配置使用pdo

    本篇文章是對php5配置使用pdo的方法進行了詳細的分析介紹,需要的朋友參考下
    2013-07-07
  • php中jQuery插件autocomplate的簡單使用筆記

    php中jQuery插件autocomplate的簡單使用筆記

    剛接觸jQuery,時間不太長,以下文章只限于參考使用。查了一部分資料,最后終于寫成功了,只是單純的實現(xiàn),其它的特殊用法還沒有進行深入研究,簡單貼出來,希望可以給新手一個參考
    2012-06-06
  • php中照片旋轉(zhuǎn) (orientation) 問題的正確處理

    php中照片旋轉(zhuǎn) (orientation) 問題的正確處理

    這篇文章主要介紹了php中照片旋轉(zhuǎn) (orientation) 問題的正確處理,文中給出了詳細的介紹和示例代碼,相信對大家具有一定的參考價值,有需要的朋友們下面來一起看看吧。
    2017-02-02

最新評論

邛崃市| 湖州市| 临朐县| 普兰店市| 广州市| 固原市| 通州区| 柞水县| 土默特右旗| 英山县| 汨罗市| 汨罗市| 五河县| 景东| 融水| 宜都市| 常州市| 阿拉善右旗| 鄯善县| 西畴县| 清丰县| 始兴县| 曲阳县| 于田县| 利津县| 阿坝| 乐昌市| 亚东县| 德惠市| 峨眉山市| 阜城县| 青田县| 边坝县| 历史| 平阴县| 邵阳市| 蕲春县| 汕尾市| 榕江县| 新和县| 澳门|