微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php反射类ReflectionClass用法分析

本文实例讲述了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 代码如下:

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

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

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

举个例子:

rush:PHP;"> class fuc { //定义一个类 static function ec() { echo '我是一个类'; } } $class=new ReflectionClass('fuc'); //建立 fuc这个类的反射类

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

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

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

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

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

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

补充

PHP代码在线格式化工具,可以方便读者对网上压缩的PHP格式化代码后进行阅读,方便实用!

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

更多关于PHP相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》、《》、《》、《》及《PHP常见数据库操作技巧汇总》

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐