加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php反射类ReflectionClass用法分析

发布时间:2020-12-12 21:30:32 所属栏目:PHP教程 来源:网络整理
导读:本篇章节讲解php反射类ReflectionClass用法。供大家参考研究具体如下: 先来看一段代码: implementsInterface('Iplugin')) { $plugins[] = $reflectionClass; } } return $plugins;}function computeMenu(){ $menu = array(); foreach(findPlugin

本篇章节讲解php反射类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 代码如下:

'MycoolPlugin','link' => '/MyCoolPlugin')); } public static function getArticles() { return array(array('path' => '/MycoolPlugin','title' => 'This is a really cool article','text' => xxxxxxxxx)); } }

上述代码是php反射类的一个应用。

什么是php反射类,顾名思义,可以理解为一个类的映射。

举个例子:

至于$class 这反射类里有什么东东,可以查看手册,这里不详解了

newInstance(); //相当于实例化 fuc 类 $fuc->ec(); //执行 fuc 里的方法ec /*最后输出:我是一个类*/

其中还有一些更高级的用法

getmethod('ec'); //获取fuc 类中的ec方法 $fuc=$class->newInstance(); //实例化 $ec->invoke($fuc); //执行ec 方法

上面的过程很熟悉吧。其实和调用对象的方法类似

只不过这里是反着来的,方法在前,对象在后

补充

php代码在线格式化美化工具:

更多关于PHP相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》、《》、《》、《》及《》

希望本文所述对大家PHP程序设计有所帮助。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读