プログラム実行時、最初にソースコード全体を解析されるということでしょうか?
現在のほとんどの言語は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