PHP8.1では新機能で『第一級 callable』が追加されました。最初聞いたときなんのこっちゃ?です。
内容を見るとなんてことない、コールバック指定の方法がよりかんたんに分かりやすくなりました。
コールバックとは実行可能な関数を変数に代入したり、関数のパラメータに渡して受け取った側で実行することです。
続きを読むPHP8.1では新機能で『第一級 callable』が追加されました。最初聞いたときなんのこっちゃ?です。
内容を見るとなんてことない、コールバック指定の方法がよりかんたんに分かりやすくなりました。
コールバックとは実行可能な関数を変数に代入したり、関数のパラメータに渡して受け取った側で実行することです。
続きを読むコールバックとは、関数名の文字列から関数を実行する際の関数名文字列のことです。
PHPではstring型と配列型で指定するんですが、内部ではcallable型というコールバック専用の型に変換される。
見た目は文字列や配列に '()' を付けて関数が実行されるのがコールバックの不思議なところ。
続きを読むClosureクラスは、無名関数(クロージャ)が返すオブジェクトの型なんですが、その他にも便利な機能をもっています。
一番すごいのは、既存クラスを編集せずにメソッドを追加できることかな?
これだけ聞いてもなんのことか分からないと思うけど。
PHP8.1では新しいコールバックの記法にも使われてます。
続きを読むふつうプログラミングの関数は、test() のように記述して実行します。
しかしPHPでは、'test'(), "test"() でもまったく同じことができる。
クォーテーションがなくてもいいならいらないじゃん、ていう仕様なんですが、これの正体ははっきりしています。
続きを読むPHPにかぎらず、プログラム言語には関数名の文字列から関数を実行することができます。そのさいの関数名文字列をコールバックと言います。
PHPでは無名関数の型、Closureクラスにその処理がある。
ってことは分かりますね? PHPでは無名関数を使います。
続きを読むClosureクラスは無名関数(クロージャ)、アロー関数の型として使用します。
そのオブジェクトは変数に代入して 『$test()』のように変数に '()' を付けて関数を実行しますが、もうひとつ、Closure::call()を使っても実行可能。
同じ無名関数の実行なんですが、根本的なちがいがある。
続きを読む