You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP 7.1.7中对象方法闭包引用自身属性的正确语法?

在PHP 7.1.7中闭包use子句引用对象属性的正确写法

你遇到的这个语法错误是因为PHP 7.1及更早版本不允许在闭包的use子句中直接引用对象的属性(比如$this->events),use只能接受变量,不能直接解析对象属性表达式。

解决方法:先把属性赋值给临时变量

在定义闭包之前,先将$this->events赋值给一个普通变量,再在use中引用这个变量即可。修改后的代码如下:

class Entity extends ControllerBase {
    private $view;
    private $events;
    public function print($tid) {
        self::loadView($tid);
        self::loopView();
        
        // 先把对象属性赋值给临时变量
        $events = $this->events;
        
        return (new StreamedResponse(function() use ($events) {
            // 这里可以正常使用$events变量了
            // ... 你的闭包逻辑 ...
        }));
    }
}

额外说明(如果后续考虑升级PHP版本)

如果之后能升级到PHP 7.4及以上版本,可以使用箭头函数,箭头函数会自动继承当前作用域的$this,不需要手动use任何变量,代码会更简洁:

return (new StreamedResponse(fn() => {
    // 这里可以直接使用$this->events
    // ... 你的闭包逻辑 ...
}));

但在你当前使用的PHP 7.1.7版本中,只能通过临时变量的方式解决这个问题。

内容的提问来源于stack exchange,提问作者user151841

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 09:29:37