diff --git a/language/predefined/closure/getcurrent.xml b/language/predefined/closure/getcurrent.xml new file mode 100644 index 0000000000..c94c1fa048 --- /dev/null +++ b/language/predefined/closure/getcurrent.xml @@ -0,0 +1,121 @@ + + + + + + Closure::getCurrent + 現在実行中のクロージャを返す + + + + &reftitle.description; + + public static ClosureClosure::getCurrent + + + + 現在実行中のクロージャを返します。このメソッドは主に、 + use キーワードを使ってクロージャ変数への参照をキャプチャすることなく、 + 再帰的なクロージャを実装するのに役立ちます。 + + + このメソッドはクロージャの内部から呼び出す必要があります。 + クロージャのコンテキスト外から呼び出すと、 + Error: Current function is not a closure. が発生します。 + + + + + &reftitle.parameters; + &no.function.parameters; + + + + &reftitle.returnvalues; + + 現在実行中の Closure を返します。 + + + + + &reftitle.errors; + + クロージャのコンテキスト外から呼び出された場合、 + Error をスローします。 + + + + + &reftitle.examples; + + <methodname>Closure::getCurrent</methodname> の例 + + Closure::getCurrent を使って + 再帰的なフィボナッチ関数を実装する例: + + + +]]> + + + + 従来のアプローチとの比較 + + PHP 8.5 より前のバージョンでは、再帰的なクロージャを実装するには + use キーワードを使ってクロージャ変数への参照をキャプチャする必要がありました: + + + +]]> + + + Closure::getCurrent を使うアプローチでは、 + use 句で変数を参照で宣言する必要がなくなり、 + コードがよりクリーンで間違いにくくなります。 + + + + + +