函数名称: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() 绑定前的外部变量。
热门工具排行榜