【发布时间】:2019-07-03 04:29:27
【问题描述】:
我正在尝试将对象属性传递给闭包(在该对象的方法中),如下所示:
class Entity extends ControllerBase {
private $view;
private $events;
public function print($tid) {
self::loadView($tid);
self::loopView();
return (new StreamedResponse(function() use ($this->events){
...
}
}
}
$events 属性在loopView() 方法中被实例化。这似乎对我有用,但我收到此错误:
ParseError: syntax error, unexpected '->' (T_OBJECT_OPERATOR), expecting ',' or ')' in ...
似乎在说它不希望在use 中引用一个对象。我不知道为什么这是无效的,经过一番谷歌搜索,我找不到任何引用我的具体问题的东西。
在 PHP 7.1.7 中,是否可以这样做,如果可以,正确的语法是什么?
【问题讨论】:
-
将
$this->events传递到一个新变量中,因为$this在任何函数中都有另一个含义 -
最坏的情况,你可以设置
$evt = $this->events然后把它传递给use()。