Closure::bind

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

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

説明

public static Closure::bind(Closure $closure, ?object $newThis, object|string|null $newScope = "static"): ?Closure

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

パラメータ

closure

バインドする無名関数。

newThis

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

newScope

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

戻り値

新しい Closure オブジェクトを返します。 失敗した場合は null を返します。

例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

参考

関連キーワード:  オブジェクト, Closure, クラス, スコープ, 複製, bindTo, bind, メソッド, static, パラメータ