ふつうプログラミングの関数は、test() のように記述して実行します。
しかしPHPでは、'test'(), "test"() でもまったく同じことができる。
クォーテーションがなくてもいいならいらないじゃん、ていう仕様なんですが、これの正体ははっきりしています。
続きを読むWebのサーバーサイドでよく使われるプログラム言語のPHP。そのPHPについて情報を発信します。
自分で情報を探しながらやっても、なかなかスムーズに答えにたどりつかない人向けです。
経験が足りないだけで、遅かったり、失敗しても自信をなくさなくていいです。いまは大きくなるために、技術を知って試す時期なので。
むしろたくさん悩んで、フリーズして、失敗してください。気がついたら最適な答えを出す力が自然と身についているでしょう。
ふつうプログラミングの関数は、test() のように記述して実行します。
しかしPHPでは、'test'(), "test"() でもまったく同じことができる。
クォーテーションがなくてもいいならいらないじゃん、ていう仕様なんですが、これの正体ははっきりしています。
続きを読むPHPにかぎらず、プログラム言語には関数名の文字列から関数を実行することができます。そのさいの関数名文字列をコールバックと言います。
PHPでは無名関数の型、Closureクラスにその処理がある。
ってことは分かりますね? PHPでは無名関数を使います。
続きを読むClosureクラスは無名関数(クロージャ)、アロー関数の型として使用します。
そのオブジェクトは変数に代入して 『$test()』のように変数に '()' を付けて関数を実行しますが、もうひとつ、Closure::call()を使っても実行可能。
同じ無名関数の実行なんですが、根本的なちがいがある。
続きを読むClosureクラスは無名関数の型として使われますが、クラスといえば new演算子でしょ? といっても過言じゃないインスタンスの生成ができません。
どうやら無名関数やクロージャ、アロー関数の戻り値以外では使われたくないらしい。
わざわざ __construct() で禁止にしているほどです。
続きを読む本来、クラス内のprivateメソッドはクラス内の他メソッドでしか実行できません。クラスオブジェクトの外からは実行不可能。
でも、Closureクラスを使えばそれができます。
クロージャをクラスメソッドとしてあとで追加できる方法を利用すれば。
このクロージャはクラスの外に定義するのに、クラスメソッドと同じように動きます。
続きを読む本来、クラス内のprivateプロパティは、クラスでゲッターメソッドを用意しない限り外からは見えません。
でも、Closureクラスを使えばそれができます。
クロージャをクラスメソッドとしてあとで追加できる方法を利用すれば。
値を変更することも可能。
続きを読む