gpt4 book ai didi

php - $this 在回调函数中

转载 作者:可可西里 更新时间:2023-11-01 00:11:11 24 4
gpt4 key购买 nike

我想知道为什么会这样:

class Foo {
public function doSomethingFunny($subject) {
preg_replace_callback(
"#pattern#",
array($this, 'doX'),
$subject
);
}
private function doX() {
echo 'why does this work?';
}
}

为什么回调还在 $this 的上下文中?我希望它只允许公共(public)方法。我缺少有关回调工作原理的一些基本知识。

最佳答案

preg_replace_callback() 中的回调参数允许调用方法,并允许传递一个数组来告诉方法回调的上下文。不仅是$this,还可以是任何对象变量。

$foo = new Foo();
preg_replace_callback(
"#pattern#",
array($foo, 'bar'),
$subject
);

在上面的例子中,如果 Foo::bar() 是私有(private)的,那将不起作用。但是,在您的原始情况下,由于使用了与私有(private)方法处于同一上下文中的 $this,私有(private)方法仍会被触发。

关于php - $this 在回调函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5109648/

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