匿名関数 (ラムダとも呼ばれる) は、クラス Closure のオブジェクトを返します。このクラスには、匿名関数をさらに制御する追加のメソッドがいくつかあります。
Closure { /* Methods */ private __construct ( void ) public static bind ( Closure $closure , object $newthis [, mixed $newscope = "static" ] ) : Closure public bindTo ( object $newthis [, mixed $newscope = "static" ] ) : Closure public call ( object $newthis [, mixed $... ] ) : mixed public static fromCallable ( callable $callable ) : Closure }
private Closure::__construct (void) — このメソッドは、Closure クラスのインスタンス化を無効にするためにのみ使用されます。このクラスのオブジェクトは、匿名関数によって作成されます。
public static Closure::bind ( Closure $closure , object $newthis [,mixed $newscope = "static" ] ) − Closure — 特定のバインディング オブジェクトとクラス スコープを使用してコピーします。 。このメソッドは Closure::bindTo() の静的バージョンです。
public Closure::bindTo ( object $newthis [,mixed $newscope = "static" ] ) - Closure — 新しいバインディング オブジェクトとクラス スコープを使用してクロージャをコピーします。本体とバインド変数は同じですが、オブジェクトと新しいクラス スコープが異なる新しい匿名関数を作成して返します。
public Closure::call ( object $newthis [,mixed $... ] ) −mixed — クロージャーを一時的に newthis にバインドし、任意の引数を指定して呼び出します。
オンライン デモンストレーション
<?php class A { public $nm; function __construct($x){ $this->nm=$x; } } // Using call method $hello = function() { return "Hello " . $this->nm; }; echo $hello->call(new A("Amar")). "";; // using bind method $sayhello = $hello->bindTo(new A("Amar"),'A'); echo $sayhello(); ?>
上記のプログラムは次の出力を表示します
Hello Amar Hello Amar
以上がPHPクロージャクラスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。