(PHP 5 >= 5.4.0, PHP 7)
Closure::bind — バインドされたオブジェクトとクラスのスコープでクロージャを複製する
$closure
, object $newthis
[, mixed $newscope
= "static"
] ) : Closureこのメソッドは、静的メソッド版の Closure::bindTo() です。 詳細な説明は Closure::bindTo() のドキュメントを参照ください。
closure
バインドする無名関数。
newthis
指定した無名関数をバインドするオブジェクト。クロージャのバインドを解除するには
NULL
を指定します。
newscope
クロージャを関連づけるクラススコープ、あるいは 'static' で現在のスコープを維持します。 オブジェクトを渡した場合は、そのオブジェクトの型をその代わりに使います。 これは、バインドしたオブジェクトの protected メソッドや private メソッドの可視性を決めます。 このパラメータに、内部クラスのオブジェクトを渡すことはできません。
新しい Closure オブジェクトを返します。
失敗した場合に FALSE
を返します
バージョン | 説明 |
---|---|
7.0.0 |
newscope に内部クラスのオブジェクトを渡すことができなくなりました。
以前のバージョンでは、渡すことができていました。
|
例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