茄子在线看片免费人成视频,午夜福利精品a在线观看,国产高清自产拍在线观看,久久综合久久狠狠综合

    <s id="ddbnn"></s>
  • <sub id="ddbnn"><ol id="ddbnn"></ol></sub>

  • <legend id="ddbnn"></legend><s id="ddbnn"></s>

    php反射類ReflectionClass用法分析
    來源:易賢網 閱讀:968 次 日期:2016-08-23 15:45:30
    溫馨提示:易賢網小編為您整理了“php反射類ReflectionClass用法分析”,方便廣大網友查閱!

    本文實例講述了php反射類ReflectionClass用法。分享給大家供大家參考,具體如下:

    先來看一段代碼:

    /**

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

     * @author :PHPCQ.COM

     */

    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;

    }

    require_once('plugin.php');

    $menu = computeMenu();

    $articles = computeArticles();

    print_r($menu);

    print_r($articles);

    plugin.php 代碼如下:

    <?php

    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));

     }

    }

    上述代碼是php反射類的一個應用。

    什么是php反射類,顧名思義,可以理解為一個類的映射。

    舉個例子:

    class fuc { //定義一個類

     static

     function ec() {

      echo '我是一個類';

     }

    }

    $class=new ReflectionClass('fuc'); //建立 fuc這個類的反射類

    至于$class 這反射類里有什么東東,可以查看手冊,這里不詳解了

    $fuc=$class->newInstance(); //相當于實例化 fuc 類

    $fuc->ec(); //執(zhí)行 fuc 里的方法ec

    /*最后輸出:我是一個類*/

    其中還有一些更高級的用法

    $ec=$class->getmethod('ec'); //獲取fuc 類中的ec方法

    $fuc=$class->newInstance(); //實例化

    $ec->invoke($fuc);   //執(zhí)行ec 方法

    上面的過程很熟悉吧。其實和調用對象的方法類似,只不過這里是反著來的,方法在前,對象在后

    希望本文所述對大家PHP程序設計有所幫助。

    更多信息請查看網絡編程
    易賢網手機網站地址:php反射類ReflectionClass用法分析

    2026上岸·考公考編培訓報班

    • 報班類型
    • 姓名
    • 手機號
    • 驗證碼
    關于我們 | 聯(lián)系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
    工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網