(PHP 5 >= 5.4.0, PHP 7, PHP 8)
Closure::bind — バインドされたオブジェクトとクラスのスコープでクロージャを複製する
$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 A {
private static $sfoo = 1;
private $ifoo = 2;
}
$cl1 = static function() {
return A::$sfoo;
};
$cl2 = function() {
return $this->ifoo;
};
$bcl1 = Closure::bind($cl1, null, 'A');
$bcl2 = Closure::bind($cl2, new A(), 'A');
echo $bcl1(), "\n";
echo $bcl2(), "\n";
?>
上の例の出力は、 たとえば以下のようになります。
1 2