PHP类的反射用法实例
本文实例讲述了PHP类的反射用法。分享给大家供大家参考。具体实现方法如下:
该例实现对于每个频道获取相应的类来执行相应的操作。具体如下:
foreach($this->chs as $ch) {
$className = $this->chsMap[$ch];
if($className) { // 如果是合法的类名
// 获取反射类
$class = new ReflectionClass($className);
// 获取类的方法
$recd = $class->getmethod('exeRecd');
// 生成类的实例
$instance = $class->newInstance($this->qq, $this->ip);
// 执行方法
$result[$ch] = $recd->invoke($instance);
}
}
希望本文所述对大家的PHP程序设计有所帮助。
相关推荐
-
PHP基于反射获取一个类中所有的方法
本文实例讲述了PHP基于反射获取一个类中所有的方法.分享给大家供大家参考,具体如下: 当我们使用一个类时既没有源码也没有文档时(尤其是php扩展提供的类,比如mysqli,Redis类),我们该怎么知道这个类中提供了哪些方法,以及每个方法该怎么使用呢,此时就该PHP中强大的反射登场了,下面以Redis扩展为例用代码演示: <?php $ref = new ReflectionClass('Redis'); $consts = $ref->getConstants(); //返回所有常量名和值
-
PHP面向对象程序设计之类与反射API详解
本文实例讲述了PHP面向对象程序设计之类与反射API.分享给大家供大家参考,具体如下: 了解类 class_exists验证类是否存在 <?php // TaskRunner.php $classname = "Task"; $path = "tasks/{$classname}.php"; if ( ! file_exists( $path ) ) { throw new Exception( "No such file as {$path}&qu
-
PHP通过反射动态加载第三方类和获得类源码的实例
使用反射动态加载第三方类 用反射加载第三方类用处在于: 使用XML或其他配文件配置要加载的类,从而和系统源代码分离. 对加载的类进行类检查,是加载的类符合自己定义的结构. <?php abstract class Module { #核心Module类库 function baseFunc() { echo "I am baseFunc"; } abstract function execute(); } class ModuleRunner { private $configD
-
php反射类ReflectionClass用法分析
本文实例讲述了php反射类ReflectionClass用法.分享给大家供大家参考,具体如下: 先来看一段代码: /** * @name PHP反射API--利用反射技术实现的插件系统架构 * @author :PHPCQ.COM */ interface Iplugin { public static function getName(); } function findPlugins() { $plugins = array(); foreach(get_declared_classes()
-
PHP反射类ReflectionClass和ReflectionObject的使用方法
PHP中的扩展反射类,该扩展用来分析php程序,导出或提取出关于类.方法.属性.参数等的详细信息,包括注释.看一个这样的问题,php类的成员变量没有在类中声明,而是在函数中声明,有什么不同? 复制代码 代码如下: class test{ private $name; private $sex; function __construct(){ $this->aaa='aaa'; }} $test=new test(); $reflect=new Reflect
-
反射调用private方法实践(php、java)
单测中有个普遍性的问题,被侧类中的private方法无法直接调用.小拽在处理过程中通过反射改变方法权限,进行单测,分享一下,直接上代码. 简单被测试类 生成一个简单的被测试类,只有个private方法. 复制代码 代码如下: <?php/** * 崔小涣单测的基本模板. * * @author cuihuan * @date 2015/11/12 22:15:31 * @version $Revision:1.0$ **/class MyClass {/** * 私有方法 * * @param
-
PHP使用反射机制实现查找类和方法的所在位置
本文实例讲述了PHP使用反射机制实现查找类和方法的所在位置.分享给大家供大家参考,具体如下: //参数1是类名,参数2是方法名 $func = new ReflectionMethod('UnifiedOrder_pub', 'getPrepayId'); //从第几行开始 $start = $func->getStartLine() - 1; //从第几行结束 $end = $func->getEndLine() - 1; //获取路径地址 $filename = $func->get
-
解析php中反射的应用
一 反射的使用: 复制代码 代码如下: <?phpclass Person{ public $name; function __construct($name){ $this->name=$name; }}interface Module{ function execute();}class FtpModule implements Module{ function setHost($host){ print "FtpModule::setHost():$host\n"
-
php利用反射实现插件机制的方法
本文实例讲述了php利用反射实现插件机制的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: <?php /** * @name PHP反射API--利用反射技术实现的插件系统架构 */ interface Iplugin{ public static function getName(); } function findPlugins(){ $plugins = array(); foreach (get_declar
-
PHP反射机制用法实例
本文实例讲述了PHP反射机制的用法,分享给大家供大家参考之用.具体方法如下: 演示示例代码如下所示: <?php class ClassOne { function callClassOne() { print "In Class One"; } } class ClassOneDelegator { private $targets; function __construct() { $this->target[] = new ClassOne(); } function
-
PHP 反射机制实现动态代理的代码
演示用代码如下所示: 复制代码 代码如下: <?php class ClassOne { function callClassOne() { print "In Class One"; } } class ClassOneDelegator { private $targets; function __construct() { $this->target[] = new ClassOne(); } function __call($name, $args) { fore
-
PHP的反射类ReflectionClass、ReflectionMethod使用实例
PHP5 具有完整的反射API,添加对类.接口.函数.方法和扩展进行反向工程的能力. 反射是什么? 它是指在PHP运行状态中,扩展分析PHP程序,导出或提取出关于类.方法.属性.参数等的详细信息,包括注释.这种动态获取的信息以及动态调用对象的方法的功能称为反射API.反射是操纵面向对象范型中元模型的API,其功能十分强大,可帮助我们构建复杂,可扩展的应用. 其用途如:自动加载插件,自动生成文档,甚至可用来扩充PHP语言. PHP反射api由若干类组成,可帮助我们用来访问程序的元数据或者同相关的注
随机推荐
- VB.NET实现的MD5加密算法示例【32位】
- 如何远程读取数据库页面?
- AS3打开新窗口不被屏蔽的代码
- 详解nginx配置url重定向-反向代理
- JS获取CSS样式(style/getComputedStyle/currentStyle)
- javascript HTML5 canvas实现打砖块游戏
- javascript showModalDialog,open取得父窗口的方法
- 用ASP设计购物推车
- 详解C语言中getgid()函数和getegid()函数的区别
- 开发实例:JSP中实现全文检索
- java实现斐波那契数列的3种方法
- Shell中实现整数自增的几种方法示例
- 开发人员必知的8个常用linux命令
- 使用PackageManager获得应用信息实例方法
- Android常见XML转义字符(总结)
- richtextbox控件插入链接代码分享
- PHP 事件机制(2)
- php 分页类 扩展代码
- Android绘制圆形百分比加载圈效果
- 在Android中通过Intent使用Bundle传递对象的使用方法