Closure::bind

(PHP 5 >= 5.4.0, PHP 7)

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

説明

public static Closure::bind ( Closure $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 {
    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

参考