Closure::bind

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

Closure::bind バインドされたオブジェクトとクラスのスコープでクロージャを複製する

説明

public static Closure::bind ( Closure $closure , object $newthis , mixed $newscope = "static" ) : Closure|false

このメソッドは、静的メソッド版の Closure::bindTo() です。 詳細な説明は Closure::bindTo() のドキュメントを参照ください。

パラメータ

closure

バインドする無名関数。

newthis

指定した無名関数をバインドするオブジェクト。クロージャのバインドを解除するには null を指定します。

newscope

クロージャを関連づけるクラススコープ、あるいは 'static' で現在のスコープを維持します。 オブジェクトを渡した場合は、そのオブジェクトの型をその代わりに使います。 これは、バインドしたオブジェクトの protected メソッドや private メソッドのアクセス権を決めます。 このパラメータに、内部クラスのオブジェクトを渡すことはできません。

返り値

新しい 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

参考