する質問をすることでしか得られない、回答やアドバイスがある。31下記のtest01.phpのように、定数の定義より前にその定数を使う関数の定義を書いてもきちんと定数の値が表示されました。後で定義される定数を使っても大丈夫なのでしょうか。test01.php定数テストattachmentクリップ0気になる質問をクリップするクリップした質問は、後からいつでもマイページで確認できます。クリップした質問に回答があった際、通知やメールを受け取ることができます。自分も答えを知りたい質問者以外のユーザにも役立つ評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。質問の評価を上げたことを取り消します低評価-評価を下げられる数の上限に達しました評価を下げることができません1日5回まで評価を下げられます1日に1ユーザに対して2回まで評価を下げられます質問の評価を下げるteratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。コメントをしてください。送信する質問の評価を下げる機能の利用条件この機能を利用するためには、以下の事項を行う必要があります。方が先に処理されるからです。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。00:00PHPプログラムの中の定数、関数、クラスなどのいろいろな定義がある中で定数の定義が先に評価されるということでしょうか。PHPプログラムの実行時の評価の順序などについて言及したドキュメントなどがあれば教えていただきたいのですがご存知でしょうか。PHPプログラムの中の定数、関数、クラスなどのいろいろな定義がある中で定数の定義が先に評価されるということでしょうか。PHPプログラムの実行時の評価の順序などについて言及したドキュメントなどがあれば教えていただきたいのですがご存知でしょうか。私は読んでいませんので、評価が始まるのが全部の構文木が構築された後なのかどうかまでは知りません。構文木の中に未定義のシンボルがあれば、少なくともそれが評価されるまではその木の評価はできません。私は読んでいませんので、評価が始まるのが全部の構文木が構築された後なのかどうかまでは知りません。構文木の中に未定義のシンボルがあれば、少なくともそれが評価されるまではその木の評価はできません。次のように無限ループの後に間違った構文を書くと、ループが始まる前にエラーがでます。これはループ後の構文解析がループの評価より先に行われていることを意味します。print(1);helloworldしかし、次のようにループの後に未定義の関数を書くと、ループが始まります。print(1);helloworld();これは評価がソースの前から行われていることを示します。次のように無限ループの後に間違った構文を書くと、ループが始まる前にエラーがでます。これはループ後の構文解析がループの評価より先に行われていることを意味します。次のようにループの後に未定義の関数を書くと、ループが始まります。これは評価がソースの前から行われていることを示します。場合、評価は逐次実行されるが、評価が始まった時には木の構築は全て終わっていると推測されます。構文木の構築は終わっており、いつでも評価できる状態にあると推測されます。構文木の構築は終わっており、いつでも評価できる状態にあると推測されます。06:54実際にはソースを読んで確かめてください。実際にはソースを読んで確かめてください。22:52詳しく説明していただいてありがとうございます。詳しく説明していただいてありがとうございます。キャンセル完了するlink+3プログラム実行時、最初にソースコード全体を解析されるということでしょうか?現在のほとんどの言語は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"という文字列値を持っている事になりエラーにはなりません。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。22:49詳しく説明していただいてありがとうございます。詳しく説明していただいてありがとうございます。関数の中身は実行時に評価されるからさ!本当はもっと複雑ですが......。コンピュータ言語というのは、何段階かに分けて解釈し、徐々にマシン語に近づいていきます。最初の方に解釈され、関数の中身は後の方に解釈されるので、大丈夫なのです。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。commentコメント投稿link0なぜ後で定義される定数を使っても大丈夫なのでしょうか。定義する必要がありそうですね。使用されていたら...とまぁ、そんな感じで定義する順番を考えなければならないとすると、とてもプログラムを書くことはできなさそうですね。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。頂いたご意見への回答は行っておりません。