如何从 lambda 函数访问父对象?
我的一个对象中有一个递归 lambda 函数,它需要访问该对象的 mysqli 连接。这次尝试
$recfunc = function($id, $name) use($this) {
产生了不合理的致命错误
致命错误:无法在第 88 行的 C:\Users\Codemonkey1991\Desktop\workspace\melior\objects\databasemanager.php 中使用 $this 作为词法变量
有人能给我一些指示吗?
编辑:为了澄清上下文,我试图在另一个函数中创建这个 lambda 函数。
I have a recursive lambda function in one of my objects, and it needs to access the object's mysqli connection. This attempt
$recfunc = function($id, $name) use($this) {
Produced an unreasonable fatal error
Fatal error: Cannot use $this as lexical variable in C:\Users\Codemonkey1991\Desktop\workspace\melior\objects\databasemanager.php on line 88
Could anyone give me a few pointers?
Edit: Just to clarify context, I'm trying to create this lambda function inside another function.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
因为闭包本身就是对象,所以您需要将
$this
分配给局部变量,例如:Because closures are themselves objects, you need to assign
$this
to a local variable, like:对
$this
的引用不需要显式传递给 lambda 函数。The reference to
$this
does not need to be explicitly passed to the lambda function.