English | 简体中文 | 繁體中文
查询

Closure::bindTo()函数—用法及示例

「 将闭包绑定到一个新的对象或类,并返回绑定后的闭包 」


函数名称:Closure::bindTo()

适用版本:PHP 5 >= 5.4.0, PHP 7

函数描述:该函数用于将闭包绑定到一个新的对象或类,并返回绑定后的闭包。

用法:

Closure::bindTo(callable $closure, object|null $newthis, object|string|null $newscope = null) : Closure

参数:

  1. $closure(必选):要绑定的闭包函数。
  2. $newthis(可选):要绑定的新对象或类的实例。
  3. $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() 绑定前的外部变量。

补充纠错
上一个函数: Closure::bind()函数
下一个函数: Closure::call()函数
热门PHP函数
分享链接