プログラム実行時、最初にソースコード全体を解析されるということでしょうか?
現在のほとんどの言語はPHPも含め実行前にソースコード全体を解析しますが、それは必須では無いです。
冒頭から実行あるいは定義しながらソースを読んでいくPHP風な言語があったとしても、funcA
の定義の中で、構文解析をすればCONST_B
は定数だと言うことは分かりますので、そのまま関数funcA
が定義されます。
その次に、CONST_A
がdefine
されます。
その次に、funcA
を呼び出して、呼び出されたfuncA
の中でようやくCONST_B
の価を参照しようとしてすでにdefine
されているので値の取り出しに成功します。
つまりfuncA
の定義時にはCONST_A
が定数だと言うことさえ分かれば良くて、値が入っている必要は無いです。値は参照するときに必要です。
CONST_A
のdefine
とfuncA
の呼び出し順序を入れ替えると、funcA
の実行時点で、CONST_B
は未定義で、普通の言語だとエラーになります。PHPの場合はその辺がいい加減なので、CONST_B
は"CONST_B"
という文字列値を持っている事になりエラーにはなりません。ただし警告が出ますが。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/04/25 15:00
2017/04/25 21:25
2017/04/25 21:48
2017/04/25 21:53 編集
2017/04/25 21:54
2017/04/26 13:52