函数名称:Closure::bindTo()
适用版本:PHP 5 >= 5.4.0, PHP 7
函数描述:该函数用于将闭包绑定到一个新的对象或类,并返回绑定后的闭包。
用法:
Closure::bindTo(callable $closure, object|null $newthis, object|string|null $newscope = null) : Closure
参数:
- $closure(必选):要绑定的闭包函数。
- $newthis(可选):要绑定的新对象或类的实例。
- $newscope(可选):要绑定到的新类对象或类名。
返回值:
该方法返回一个新的闭包。如果绑定失败,则返回 false
。
示例:
class Foo {
private $name = 'John';
}
$name = 'Mary';
$anonymous = function() use ($name) {
echo $this->name . ' ' . $name;
};
$foo = new Foo();
$boundClosure = $anonymous->bindTo($foo, 'Foo');
$boundClosure(); // 输出:John Mary
在上面的例子中,我们定义了一个匿名函数 $anonymous
,该函数使用了外部变量 $name
和 $this->name
。
然后,我们创建了一个 Foo
类的实例 $foo
。
使用 bindTo()
方法,将闭包函数 $anonymous
绑定到 $foo
对象,并指定绑定到 Foo
类的作用域。
最后,调用绑定后的闭包 $boundClosure
,会输出 John Mary
。这是因为 $this->name
访问了绑定后的对象 $foo
的私有属性 name
,而 $name
访问了 bindTo()
绑定前的外部变量。