質問: PHPをなぜhtmlに組み込んで使っている人がいるのかよく分かりません。 プログラミング初心者です。 PHPって、「クライアントとサーバー上のさまざまなリソースを仲介するCGIプログラム」を作成するための言語ですよね? 元来CGIというものは、サーバー側の処理を書いた、サーバーのマシンが実行するプログラムであるから、サーバーの中に独立して存在するプログラムであるはずです。 ### php in htmlの場合 これが分かりません。 クライアント=ブラウザ側のプログラムはJavaScriptが受け持つはずです。 なのに、phpをまるでJavaScriptのようにhtmlに組み込んで使っている人がいます。 phpを実行するのはあくまでサーバー側のマシンですから、 php in htmlの組み合わせだと、サーバーが持っているhtmlファイルに対して、 サーバーマシン君がインターネット回線の向こう側からフラフラとやってきて、phpの記述の部分だけ横槍を入れる形で操作してくる、 というイメージになると思います。 操作主体がブラウザで完結しているJavaScript in HTMLという組み合わせにせず、あえてphpをhtmlに組み込む意味がわかりません。 ### html in phpの場合 これは分かります。 ただ、別の疑問があって、 phpでechoを使うと、なぜかサーバーマシンのコンソールでなく、ブラウザ上に文字列が表示されますが、これは、サーバーマシンがHTML文書を作成してブラウザに送信している、ということでしょうか? つまりechoとは、「HTMLを作成し、ブラウザに送信するメソッド」ということでしょうじゃ? また、phpの内部にhtmlを組み込んでいるものもありますが、それは、 「phpの内部でhtmlタグを宣言すると、htmlファイルが作成され、それがブラウザに送信される」ということが起きているのでしょうか? ご回答よろしくお願いします。 ### それぞれの役割 それぞれの言語の役割はこんなイメージで合っているでしょうか? Edge「僕の名前はMicrosoft Edge。来月の妹の誕生日パーティーのために会場を探しているんだ。」 Edge「友達の『Webサーバー君』が、色んな施設の会場の貸し出し事業をやっているから、彼から部屋を借りようと思うんだ」 Webサーバー「なぁedge、このタイプの部屋はどうだい?index.htmlってプランなんだが...」 Edge「うーん...まぁ広さ的にも値段的にもいいし、レイアウトもなかなかだね。これにするよ!」 Webサーバー「よし!じゃあ、第3会場を押さえておいたから、それを使いなよ」 Edge「ありがとう」 〜〜〜 Edge「うーん、このindex.htmlっていう会場、誕生日パーティで使うにはちょっと殺風景だよなぁ...」 Edge「よし、友達のJavaScriptくん、CSSちゃん、canvasくん達を呼んで装飾やってもらおう!彼らそういうの得意だから」 〜〜 JS「Edgeくん、きたよ〜」 CSS「もう、急に呼び出すんだから、Edgeったら」 canvas「さあ、僕らデザイン三銃士が来たからにはもう不可能はないぞ」 Edge「わ〜!みんな集まってくれてありがとう!」 CSS「で、あたしらは何をすればいいの?早く教えなさい」 Edge「ここの椅子をもっとこう...あそこにこの装飾をして欲しくて...それで...」 ガチャ... index.php「さーせーん!今回会場のデザインに伺いましたindex.phpと申しますが〜」 Edge「え、君たちは?」 index.php「ああ、あっしらはWebサーバー株式会社の社員で、php部署のものでさぁ」 index.php「お客様がご利用の貸し出しプラン『index.html』は、あっしらでお部屋の装飾をしてさしあげるサービスが付いておりましてね、それで伺いました」 CSS「え!?どういうことよそれ?」 Edge「し、知らなかった...」 index.php「まぁとにかく、この部屋の装飾はあっしらにお任せくだせぇ!皆さんはどうぞ、パーティの時間までおくつろぎを。よーし!オマエらはじめっぞ〜〜!」 index.php子分「「押忍!!」」 タッタッタッタッ... JS「暇になっちゃったね...ははは」 CSS「もう、せっかく張り切ってたのに...誰かさんのせいで!」ギロッ Edge「ごめんよ〜みんな...phpなんてサービスあるなんて聞いてなかったんだ」 canvas「まぁまぁ、時間ができたことだし、近くのカフェで一服お茶でもしようじゃないか」 Fin こういう感じで合っていますか?
回答: そろそろちゃんと体系的な知識を身に着けたほうが良いですよ。 ネット上の分散された情報を勝手に解釈しているので、一般的な認識との乖離が激しく、質問の意味が分かりません。 > > PHPをなぜhtmlに組み込んで使っている人がいるのかよく分かりません > > phpをまるでJavaScriptのようにhtmlに組み込んで使っている人がいます。 > > > php はサーバサイド言語なので、JavaScript のように~~クライアントサイド~~ブラウザで実行することはできません。 html に組み込んでクライアントで使用することはできないため、html に組み込んで使用する人もいないです。 > > phpでechoを使うと、なぜかサーバーマシンのコンソールでなく、ブラウザ上に文字列が表示されますが、これは、サーバーマシンがHTML文書を作成してブラウザに送信している、ということでしょうか? > > > Web サーバが php に「ブラウザに返すレスポンス」を作ることを要求し、作られたレスポンスをブラウザに返すため、ブラウザ上に php が作った内容が表示されます。 たとえ話の是非 ======= **質問の後半にあるたとえ話は読んでいません。** サーバとクライアントのやり取りはリクエスト/レスポンスを見れば良いのでたとえ話は意味がないです。 **個人的見解ですが、技術をたとえ話で理解するのはエンジニアとして正しい理解に結びつかないです** 用語の定義 ===== CGI とは Common Gateway Interface の略です。 「Web サーバ」と各種の外部実行プログラムをつなぐ一般的なインターフェイスです。(仕様です) php は Web サーバにモジュールとして直接組み込んで使用することもできるので、CGI を使用しないケースも多々あります。 勝手な用語定義や勝手なイメージが前提であるため、識者との会話が成立してません。まず用語の正確な定義を知った上で質問しなければ、双方にとって時間のムダです。最初に書きましたが、体系的な知識が必要です。