博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP 使用reflection时的问题,以及解决方案
阅读量:4930 次
发布时间:2019-06-11

本文共 913 字,大约阅读时间需要 3 分钟。

  错误:PHP Fatal error: Using $this when not in object context

  代码如下:

1 
success;10 });11 }12 }13 14 $reflection = call_user_func([new someClass(),'getReflection']);15 $reflection->invoke();

  原因:ReflectionFunction is operating on unbound Closures. That's why after the ReflectionFunction::invoke() call, there's no defined $this variable inside the Closure and as such your fatal error appears. ReflectionFunction 操作了一个并没有绑定对象($this)的匿名函数

  解决方案:利用 Closure::bind 改变作用域

1 $reflection = call_user_func([new someClass(),'getReflection']);2 //var_dump($reflection->getClosureScopeClass()->name); //string(9) "someClass"3 call_user_func(Closure::bind(4     $reflection->getClosure(), //需要绑定的匿名函数。5     $reflection->getClosureThis(), //需要绑定到匿名函数的对象,或者 NULL 创建未绑定的闭包。6     $reflection->getClosureScopeClass()->name //想要绑定给闭包的类作用域7 ));

  结果:success

转载于:https://www.cnblogs.com/loveyouyou616/p/5896664.html

你可能感兴趣的文章
securecrt上传下载文件命令
查看>>
Hiernate的批量处理
查看>>
很漂亮的SweetAlert.js 弹出层
查看>>
JQuery中的param()、 serialize() 和serializeArray()方法
查看>>
[ios][opengles]OpenGL ES基础知识简介
查看>>
[转]xml解析工具的效率比较QDomDocument、TinyXml-2、RapidXml、PugiXml
查看>>
Apache的443端口被占用解决方法(转)
查看>>
H - Solve this interesting problem 分类: ...
查看>>
重构父类方法和返回值
查看>>
【原创】字符串工具类--驼峰法与下划线法互转
查看>>
模块化开发规范
查看>>
POJ 2642 The Brick Stops Here 0-1背包
查看>>
格式化操作
查看>>
DDX和DDV——控件与变量之间值的传递
查看>>
bzoj1093: [ZJOI2007]最大半连通子图
查看>>
javascript 数组以及对象的深拷贝(复制数组或复制对象)的方法
查看>>
html & angularJS-一个简单的10s倒计时
查看>>
【转载】六种位运算符
查看>>
DDR3详解(以Micron MT41J128M8 1Gb DDR3 SDRAM为例) 一
查看>>
CACHE的Miss和Hit
查看>>