gpt4 book ai didi

php - 在 PHP 中重新分配 $this

转载 作者:可可西里 更新时间:2023-10-31 22:47:31 25 4
gpt4 key购买 nike

(我知道这可能是一个棘手的决定,但我希望我们避免回答诸如“请不要”之类的答案。)

我有一个类,其构造函数将回调作为参数。在此回调中,我认为 $this 变量可用作对回调所属实例的引用,这在语义上是最正确的。 (我注意到 5.4 已经在匿名函数的上下文中恢复了 $this 一个类中定义,但是即使这样的改变在这里也无济于事,因为如前所述,函数作为参数传递给构造函数)

这个问题是因为实例没有作为参数传递给回调,而是通过 use()

use() 倾向于为 $this 哭泣,声明它不能用作词法变量。

有没有一种方法,无需将其作为参数传递(任何方法,使用() 或不使用,都可能很好)来完成此操作?

目前,我唯一能想到的是:

 ... function($foo, $bar)
use($array_with_this){
extract($array_with_this); // contains instance with key 'this'

// code using $this

} ...

但这是强制性的额外要求,我宁愿不需要。

最佳答案

$that = $this;
cb(function () use ($that) {
$that-> ...
});

This $this 是一个特殊的关键字,您不能在对象上下文之外使用它。匿名函数目前在对象上下文之外运行。这显然会在下一版本的 PHP (5.4) 中改变。

关于php - 在 PHP 中重新分配 $this,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7114915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com