質問: PHP参考書のサンプルプログラムに関しての質問です。 参考書は2013年のもので、プログラムの対応バージョンはPHP5.3、5.4、5.5と記載されています。 問題のプログラムはログインフォームのサンプルプログラムです。 ~~略~~ ~~略~~ と{}内で一度PHP終了タグが入ることにとても違和感を感じ、色々調べているのですが、 この記述方法に関する情報が見つかりません。 サンプルプログラムは問題なく動作します。 HTMLの知識はあるのですが、現在PHPを勉強し始めたばかりです。 どなたか分かる方いますでしょうか よろしくお願いします。
回答: >一度PHP終了タグが入ることにとても違和感を感じ、色々調べているのですが、 >この記述方法に関する情報が見つかりません。 ちょっとした考えの違いです。 【「?>」は、PHPの終了タグではありません。】 ---- どういうことかって? PHPプログラムは、HTMLテキスト内に書きます。 ここでHTMLの原則に立ち戻ってみると、HTMLでのタグというのは、「<」で始まり「>」で終わる、と定義されています。 タグにパラメータがある場合、例えば <タグ名 パラメータ1=値1 パラメータ2=値2 オプションA オプションB> という感じに書きます。 そしてHTMLに定義されていない名前のついたタグは、そのタグ「<名前 ~>」が丸々無視される、というルールになっています。 つまり、HTMLの解釈上は、PHPプログラムを含んだファイルというのは、 という知らない名前「?php」のタグが、1つあるいは複数含まれている、というだけのものに過ぎません。 一方、PHP利用可能なサーバからそのファイルを見る場合、 によって囲まれた部分を、プログラムソースとして取り出し、実行する。 それは複数箇所に分かれていても構わない。 という事になっています。 そうすると、 と書いたものと、 は、全く同一のプログラムであるのです。 ですから、 (中略) となっていても、phpプログラム部分を抽出した場合には全く同一のプログラムとなり、ちゃんと動いてしまいます。 -- 「」というのは、HTML中にphpプログラムを置くために考案された記述方法であり、phpプログラムの処理単位やプログラムの区切りを示すものではありません。 という言うことで、なぜ]「 exit(); }」をそんな場所にまで離して書いたのか、という理由はよく分かりませんが、そういう記述も許可されるわけです。