【发布时间】:2011-08-18 22:28:34
【问题描述】:
(我知道这可能是一个敏感的决定,但我希望我们避免诸如“请不要”之类的回答。)
我有一个类,它的构造函数将回调作为参数。在这个回调中,我认为$this 变量可用作回调所属实例的引用,这在语义上是最正确的。 (我注意到 5.4 已在匿名函数的上下文中恢复 $this在类中定义,但是即使这种更改在这里也无济于事,因为函数作为参数传递到前面提到的构造函数)
问题在于实例没有作为参数传递给回调,而是由use()提供
use() 有哭诉$this 的倾向,表示它不能用作词法变量。
有没有办法在不将其作为参数传递的情况下(任何方法,use() 可能都可以)来实现这一点?
顺便说一句,我唯一能想到的就是:
... function($foo, $bar)
use($array_with_this){
extract($array_with_this); // contains instance with key 'this'
// code using $this
} ...
但这是强制附加要求,我宁愿不需要。
【问题讨论】: