Closure::bind

(PHP 5 >= 5.4.0, PHP 7, PHP 8)

Closure::bind 复制一个闭包,绑定指定的$this对象和类作用域。

说明

public static Closure::bind ( Closure $closure , object $newthis , mixed $newscope = 'static' ) : Closure

这个方法是 Closure::bindTo() 的静态版本。查看它的文档获取更多信息。

参数

closure

需要绑定的匿名函数。

newthis

需要绑定到匿名函数的对象,或者 null 创建未绑定的闭包。

newscope

想要绑定给闭包的类作用域,或者 'static' 表示不改变。如果传入一个对象,则使用这个对象的类型名。 类作用域用来决定在闭包中 $this 对象的 私有、保护方法 的可见性。 The class scope to which associate the closure is to be associated, or 'static' to keep the current one. If an object is given, the type of the object will be used instead. This determines the visibility of protected and private methods of the bound object.

返回值

返回一个新的 Closure 对象 或者在失败时返回 false

范例

示例 #1 Closure::bind() 实例

<?php
class {
    private static 
$sfoo 1;
    private 
$ifoo 2;
}
$cl1 = static function() {
    return 
A::$sfoo;
};
$cl2 = function() {
    return 
$this->ifoo;
};

$bcl1 Closure::bind($cl1null'A');
$bcl2 Closure::bind($cl2, new A(), 'A');
echo 
$bcl1(), "\n";
echo 
$bcl2(), "\n";
?>

以上例程的输出类似于:

1
2

参见