PHP反射类带参数执行反射对象方法传入参数函数示例解析。
背景:对于kohana早期框架对类里面的before after以及controller和action的函数均可以用反射类来灵活按既定顺序执行,而在执行的时候假如异常,可以通过PHP提供的异常捕获进行捕获输出,这就涉及到类变对象后其参数的传递问题了,怎么给反射类里面的函数传递多参数乃至引用参数,这个PHP也提供了对应的反射类里函数传入的方法ReflectionMethod::invokeArgs。
使用代码片段如下:
$class = new ReflectionClass('Person'); // 建立 Person这个类的反射类 $instance = $class->newInstanceArgs($args); // 相当于实例化Person 类 public stdclass newInstance(mixed* args)//测试传入的对象是否为该类的一个实例
参考更多相关反射的文章:
http://flandycheng.blog.51cto.com/855176/326021/
http://www.phperz.com/article/14/0809/17371.html
自己研究:http://justwinit.cn/post/2090/
ReflectionMethod::invokeArgs
(PHP 5 >= 5.1.0)
ReflectionMethod::invokeArgs — 带参数执行
说明
public mixed ReflectionMethod::invokeArgs ( object $object , array $args )
使用数组给方法传送参数,并执行他。
参数
object
调用方法的对象,如果是静态对象,设置为 null
args
使用 array 传送的方法参数。
返回值
返回方法返回值
错误/异常
如果 object 指定的实例无法执行方法,那么产生 ReflectionException 异常。
如果方法调用失败,产生 ReflectionException
范例
Example #1 ReflectionMethod::invokeArgs() example
class HelloWorld {
public function sayHelloTo($name) {
return 'Hello ' . $name;
}
}
$reflectionMethod = new ReflectionMethod('HelloWorld', 'sayHelloTo');
echo $reflectionMethod->invokeArgs(new HelloWorld(), array('Mike'));
?>
以上例程会输出:
Hello Mike
注释
Note:
如果函数有参数需为引用,那么它们必须以引用方式传入。
参见
ReflectionMethod::invoke() - Invoke
__invoke()
call_user_func_array() - 调用回调函数,并把一个数组参数作为回调函数的参数
来自:http://help.bitscn.com/php/reflectionmethod.invokeargs.html

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

SOLID原则在PHP开发中的应用包括:1.单一职责原则(SRP):每个类只负责一个功能。2.开闭原则(OCP):通过扩展而非修改实现变化。3.里氏替换原则(LSP):子类可替换基类而不影响程序正确性。4.接口隔离原则(ISP):使用细粒度接口避免依赖不使用的方法。5.依赖倒置原则(DIP):高低层次模块都依赖于抽象,通过依赖注入实现。

如何在系统重启后自动设置unixsocket的权限每次系统重启后,我们都需要执行以下命令来修改unixsocket的权限:sudo...

文章讨论了PHP 5.3中引入的PHP中的晚期静态结合(LSB),从而允许静态方法的运行时分辨率调用以获得更灵活的继承。 LSB的实用应用和潜在的触摸

在PHPStorm中如何进行CLI模式的调试?在使用PHPStorm进行开发时,有时我们需要在命令行界面(CLI)模式下调试PHP�...

使用PHP的cURL库发送JSON数据在PHP开发中,经常需要与外部API进行交互,其中一种常见的方式是使用cURL库发送POST�...
